Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
HTTP_XML(3)		    Library Functions Manual		   HTTP_XML(3)

NAME
       http_xml_send,  http_xml_send_xmlrpc,  -- XML and XML-RPC requests over
       HTTP

LIBRARY
       PDEL Library (libpdel, -lpdel)

SYNOPSIS
       #include	<sys/types.h>
       #include	<netinet/in.h>
       #include	<pdel/http/xml.h>

       int
       http_xml_send(struct   http_client   *client,   struct	in_addr	   ip,
	   u_int16_t	 port,	   int	  https,    const    char    *urlpath,
	   const char *username,  const	 char  *password,  const  char	*ptag,
	   const    char    *pattrs,   const   struct	structs_type   *ptype,
	   const void *payload,	int pflags, const char *rtag, char  **rattrsp,
	   const   char	  *rattrs_mtype,  const	 struct	 structs_type  *rtype,
	   void	*reply,	int rflags, structs_xmllog_t *rlogger);

       int
       http_xml_send_xmlrpc(struct http_client	*client,  struct  in_addr  ip,
	   u_int16_t	 port,	  int	 https,	   const    char    *username,
	   const  char	*password,  const  char	 *methodName,  u_int  nparams,
	   const   struct   structs_type   **ptypes,   const   void  **pdatas,
	   const     struct	structs_type	 *rtype,     void      *reply,
	   struct xmlrpc_compact_fault *fault, structs_xmllog_t	*rlogger);

       int
       http_xml_send_xmlrpc2(struct  http_client  *client,  struct in_addr ip,
	   u_int16_t	port,	 int	https,	  const	   char	    *username,
	   const  char *password, const	char *urlpath, const char *methodName,
	   u_int    nparams,	const	 struct	    structs_type     **ptypes,
	   const void **pdatas,	const struct structs_type *rtype, void *reply,
	   struct xmlrpc_compact_fault *fault, structs_xmllog_t	*rlogger);

DESCRIPTION
       These  functions	 send and receive XML and XML-RPC over HTTP and	HTTPS.
       They   are   convenience	  wrappers   around    the    http_request(3),
       http_response(3),   structx_xml_input(3),   structs_xml_output(3),  and
       structs_xmlrpc(3) routines.

       http_xml_send() uses client to send an HTTP request for	the  URL  path
       urlpath	(which	must being with	a '/') to IP address ip	and port port.
       If https	is non-zero, an	SSL (HTTPS) request is made.  The username and
       password	may be non- NULL for "Basic" HTTP authentication.

       The remaining arguments to http_xml_send() describe  the	 optional  XML
       request payload and the expected	XML reply payload.

       To  include  a payload in the request, payload should be	non- NULL.  If
       so, ptag, pattrs, ptype,	payload, and pflags are	handled	 exactly  like
       the elem_tag, attrs, type, data,	and flags parameters (respectively) to
       the  function  structs_xml_output(3).  The request payload will be sent
       using an	HTTP POST with MIME type "text/xml".  If payload is  NULL,  an
       HTTP GET	request	is sent	instead.

       The  HTTP  response  must  contain an XML document, which is parsed and
       converted into native binary format.  The rtag, rattrsp,	 rattrs_mtype,
       rtype,  reply,  rflags,	and  rlogger  are  handled  exactly  like  the
       elem_tag, attrp,	attr_type, type, data, flags,  and  logger  parameters
       (respectively) to the function structs_xml_input(3).

       http_xml_send_xmlrpc() sends an XML-RPC request.	 The client, ip, port,
       https,	username,   password,  and  rlogger  parameters	 are  as  with
       http_xml_send().	 The XML-RPC method name is pointed to by  methodName.
       nparams	XML-RPC	 request  parameters are sent; ptypes must point to an
       array of	nparams	parameter types	and pdatas to an array of nparams  pa-
       rameter	values	having	the  corresponding types.  These are "compact"
       structs(3) types	that will be automatically  expanded  into  "exploded"
       XML-RPC types when the actual request is	sent (see structs_xmlrpc(3)).

       To  send	exploded XML-RPC values	directly, set ptypes to	NULL.  Then it
       will be assumed that each element in the	pdatas array is	an instance of
       structs_type_xmlrpc_value(3), i.e., a struct xmlrpc_value_union.

       If reply	is NULL, the reply is ignored.	Otherwise, the XML-RPC	return
       value  must  have "compact" type	matching rtype and reply must point to
       an uninitialized	region of memory large enough to hold an  instance  of
       rtype.	If  the	 request  is  successful  and  no  fault  is returned,
       http_send_xmlrpc() returns zero and reply will be initialized with  the
       "compacted" XML-RPC return value.  If the returned value	does not match
       rtype, then -1 is returned with errno set appropriately.

       To  have	 the  exploded	XML-RPC	 value returned	directly, set rtype to
       NULL.  Then it will be assumed that reply points	 to  an	 uninitialized
       instance	   of	 structs_type_xmlrpc_value(3),	  i.e.,	   a	struct
       xmlrpc_value_union, and the reply will be returned unmodified.

       If an XML-RPC fault is returned,	then  *reply  remains  unmodified  and
       http_xml_send_xmlrpc()  returns -2.  In addition, if fault is not NULL,
       then  it	 is  assumed  to  point	 to  an	 uninitialized	 instance   of
       structs_type_xmlrpc_compact_fault, i.e.,	a struct xmlrpc_compact_fault.
       The  instance will be initialized with the received XML-RPC fault.  The
       calling function	is responsible for eventually uninitializing it.

       http_xml_send_xmlrpc2() is the same as http_xml_send_xmlrpc()  but  al-
       lows the	caller to specify an URL path other than the standard "/RPC2".
       sends an	XML-RPC	request.

RETURN VALUES
       Upon  error the above functions return -1 and set errno to an appropri-
       ate value.

       If http_xml_send_xmlrpc() or http_xml_send_xmlrpc2() receives  an  XML-
       RPC fault from the server, -2 is	returned.

SEE ALSO
       http_client(3), http_request(3),	http_response(3), http_servlet_xml(3),
       http_servlet_xmlrpc(3),	      libpdel(3),	 structs_xml_input(3),
       structs_xmlrpc(3)

       XML-RPC Home Page, http://www.xmlrpc.org/.

HISTORY
       The   PDEL   library   was   developed	at   Packet    Design,	  LLC.
       http://www.packetdesign.com/

AUTHORS
       Archie Cobbs <archie@freebsd.org>

BUGS
       HTTP redirects are not followed;	instead	they generate an error.

FreeBSD	ports 15.0		April 22, 2002			   HTTP_XML(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=http_xml_send&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help