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

FreeBSD Manual Pages

  
 
  

home | help
HTTP_XML(3)	       FreeBSD 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);

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 re-
     quest 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 con-
     verted 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 ar-
     ray of nparams parameter types and	pdatas to an array of nparams parame-
     ter 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 re-
     turned 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.

RETURN VALUES
     Upon error, http_xml_send() and http_xml_send_xmlrpc() return -1 and set
     errno to an appropriate value.

     If	http_xml_send_xmlrpc() 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	13.0			April 22, 2002			  FreeBSD 13.0

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | SEE ALSO | HISTORY | AUTHORS | BUGS

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

home | help