SoupSoapMessage * e_gw_message_new_with_header (const gchar *uri, const gchar *session_id, const gchar *method_name) { SoupSoapMessage *msg; msg = soup_soap_message_new (SOUP_METHOD_POST, uri, FALSE, NULL, NULL, NULL); if (!msg) { g_warning (G_STRLOC ": Could not build SOAP message"); return NULL; } soup_message_headers_append (SOUP_MESSAGE (msg)->request_headers, "Content-Type", "text/xml"); soup_message_headers_append (SOUP_MESSAGE (msg)->request_headers, "User-Agent", "Evolution/" VERSION); soup_message_headers_append (SOUP_MESSAGE (msg)->request_headers,"Connection", "Keep-Alive"); soup_message_headers_append (SOUP_MESSAGE (msg)->request_headers, "SOAPAction", method_name); soup_soap_message_start_envelope (msg); if (session_id && *session_id) { soup_soap_message_start_element (msg, "Header","SOAP-ENV", NULL); soup_soap_message_add_attribute (msg, "encodingStyle", "", "SOAP-ENV", NULL); /* FIXME: cannot use e_gw_message_write_string_parameter as it sets prefix -types*/ soup_soap_message_start_element (msg, "session", NULL, NULL); soup_soap_message_write_string (msg, session_id); soup_soap_message_end_element (msg); soup_soap_message_end_element (msg); } soup_soap_message_start_body (msg); soup_soap_message_add_attribute (msg, "encodingStyle", "", "SOAP-ENV", NULL); soup_soap_message_add_namespace (msg, "types", "http://schemas.novell.com/2003/10/NCSP/types.xsd"); soup_soap_message_start_element (msg, method_name, NULL, NULL); return msg; }
SoupSoapMessage * soup_soap_message_new_response (SoupMessage *msg) { g_return_val_if_fail (SOUP_IS_MESSAGE (msg), NULL); return soup_soap_message_new (msg->response_headers, msg->response_body); }