Hi Dinesh,
Thanks for your reply and sorry for reply later.
I have tried used guththila parser via this config file:
ENABLE_SSL = 1
ENABLE_LIBCURL = 0
ENABLE_GUTHTHILA = 1
## LIBXML2_BIN_DIR = E:\libxml2-2.6.27.win32
ICONV_BIN_DIR = E:\iconv-1.9.2.win32
ZLIB_BIN_DIR = E:\zlib123-dll
APACHE_BIN_DIR = "C:\Program Files\Apache Software Foundation\Apache2.2"
LIBXSLT_BIN_DIR = E:\libxslt-1.1.19.win32
APACHE_VERSION_IS_2_0_59 = 0
OPENSSL_BIN_DIR = E:\OpenSSL
## LIBCURL_BIN_DIR = E:\libcurl-7.15.1-msvc-win32-ssl-0.9.8a-zlib-1.2.3
RELEASE_VER = 1.0.0
Building is smooth and I used the following apis:
ns0 = axiom_namespace_create(env,
AXIOM_SOAP11_SOAP_ENVELOPE_NAMESPACE_URI, "SOAP-ENV");
ns1 = axiom_namespace_create(env,
"http://schemas.xmlsoap.org/soap/encoding/", "SOAP-ENC");
ns2 = axiom_namespace_create(env,
"http://www.w3.org/1999/XMLSchema-instance", "xsi");
ns3 = axiom_namespace_create(env, "http://www.w3.org/1999/XMLSchema",
"xsd");
ns4 = axiom_namespace_create(env, "http://stockquote", "ns1");
/* set root layer */
envelope_ele = axiom_element_create(env, NULL, "Envelope", ns0,
&envelope_node);
status = axiom_element_declare_namespace(envelope_ele, env, envelope_node,
ns1);
printf("\n#############################%d#########################\n", status);
axiom_element_declare_namespace(envelope_ele, env, envelope_node, ns2);
axiom_element_declare_namespace(envelope_ele, env, envelope_node, ns3);
axiom_element_declare_namespace(envelope_ele, env, envelope_node, ns4);
get the following soap message:
Sending OM : <SOAP-ENV:Envelope xmlns:SOAP-ENV =
'http://schemas.xmlsoap.org/soa
p/envelope/' xmlns:ns1 = 'http://stockquote' xmlns:xsi = 'http://www.w3.org/1999
/XMLSchema-instance' xmlns:SOAP-ENC = 'http://schemas.xmlsoap.org/soap/encoding/
' xmlns:xsd = 'http://www.w3.org/1999/XMLSchema'><SOAP-ENV:Body><ns1:getQuote><n
s1:symbol>IBM</ns1:symbol></ns1:getQuote></SOAP-ENV:Body></SOAP-ENV:Envelope>
There are 3 problems:
1st, I don't know whether single squote "\'" will affect the soap message or
not. Because in the correct format, soap message uses double squote "\"". It
means xmlns:ns1 = "http://stockquote" not xmlns:ns1 = 'http://stockquote'.
2nd, it is still in disorder sequence. Because I want get the soap message
like the following order:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema" xmlns:ns1="http://stockquote">
It means ns xmlns:SOAP-ENV is in the first place, xmlns:SOAP-ENC in the
second place and xmlns:xsi in the third place.
3rd, in the server concole, there are some error infos for wrong soap message:
[7/9/07 13:58:36:953 CST] 50d0aea1 WebServicesSe E
com.ibm.ws.webservices.engine.transport.http.WebServicesServlet WSWS3112E:
Error: Generating WebServicesFault due to missing SOAPAction.
[7/9/07 13:58:36:953 CST] 50d0aea1 WebServicesSe E
com.ibm.ws.webservices.engine.transport.http.WebServicesServlet TRAS0014I: The
following exception was logged WebServicesFault
faultCode: {http://websphere.ibm.com/webservices/}Client.NoSOAPAction
faultString: WSWS3147E: Error: no SOAPAction header!
faultActor: null
faultDetail:
WSWS3147E: Error: no SOAPAction header!
at
com.ibm.ws.webservices.engine.transport.http.WebServicesServlet.getSoapAction(WebServicesServlet.java:1162)
at
com.ibm.ws.webservices.engine.transport.http.WebServicesServlet.doPost(WebServicesServlet.java:878)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at
com.ibm.ws.webservices.engine.transport.http.WebServicesServletBase.service(WebServicesServletBase.java:341)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
at
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
at
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
at
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
at
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
at
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
at
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1019)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:592)
at
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:204)
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:125)
at
com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:286)
at
com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
at
com.ibm.ws.webcontainer.cache.invocation.CacheableInvocationContext.invoke(CacheableInvocationContext.java:116)
at
com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:186)
at
com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
at
com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:615)
at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
.
WebServicesFault
faultCode: {http://websphere.ibm.com/webservices/}Client.NoSOAPAction
faultString: WSWS3147E: Error: no SOAPAction header!
faultActor: null
faultDetail:
but return value of function axis2_svc_client_send_receive(svc_client, env,
payload) is NULL, meaning no getting any response even error message.
#####################################################
Then I used attribute apis like this to create soap message:
envelope_ele = axiom_element_create(env, NULL, "SOAP-ENV:Envelope", NULL,
&envelope_node);
axiom_attribute_t *a1;
a1 = axiom_attribute_create(env, "xmlns:soap-env",
"http://schemas.xmlsoap.org/soap/envelope/", NULL);
status = axiom_element_add_attribute(envelope_ele, env, a1, envelope_node);
axiom_attribute_t *a2;
a2 = axiom_attribute_create(env, "xmlns:soap-enc",
"http://schemas.xmlsoap.org/soap/encoding/", NULL);
status = axiom_element_add_attribute(envelope_ele, env, a2, envelope_node);
axiom_attribute_t *a3;
a3 = axiom_attribute_create(env, "xmlns:xsi",
"http://www.w3.org/1999/xmlschema-instance", NULL);
status = axiom_element_add_attribute(envelope_ele, env, a3, envelope_node);
axiom_attribute_t *a4;
a4 = axiom_attribute_create(env, "xmlns:xsd",
"http://www.w3.org/1999/xmlschema", NULL);
status = axiom_element_add_attribute(envelope_ele, env, a4, envelope_node);
axiom_attribute_t *a5;
a5 = axiom_attribute_create(env, "xmlns:ns1", "http://stockquote", NULL);
status = axiom_element_add_attribute(envelope_ele, env, a5, envelope_node);
It even get guththila exception like:
Throws guththila_exception ..\..\guththila\src\guththila_xml_writer.c
355
Throws guththila_exception ..\..\guththila\src\guththila_xml_writer.c
355
Throws guththila_exception ..\..\guththila\src\guththila_xml_writer.c
355
Throws guththila_exception ..\..\guththila\src\guththila_xml_writer.c
355
Throws guththila_exception ..\..\guththila\src\guththila_xml_writer.c
355
The sequence of ns is till in disorder like:
Sending OM : <SOAP-ENV:Envelope xmlns:xsi =
"http://www.w3.org/1999/xmlschema-in
stance" xmlns:soap-enc = "http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap-
env = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd = "http://www.w3.org
/1999/xmlschema" xmlns:ns1 = "http://stockquote"><SOAP-ENV:Body><ns1:getQuote><n
s1:symbol>IBM</ns1:symbol></ns1:getQuote></SOAP-ENV:Body></SOAP-ENV:Envelope>
and return value of function axis2_svc_client_send_receive(svc_client, env,
payload) is still NULL while sever concole display the same error message.
I used IBM websphere to construct my http server via this tutorial:
http://publib.boulder.ibm.com/infocenter/wsadhelp/v5r1m2/index.jsp?topic=/com.ibm.etools.webservice.was.creation.ui.doc/samples/sstockq.html
I am a chinese and not goot at English, so if any misunderstanding, pls. feel
free to tell me.
Thanks a lot.
Kelvin.Lin
Dinesh Premalal <[EMAIL PROTECTED]> wrote:
Hi Kelvin,
Kelvin Lin writes:
> So I have to follow the sequence of namespace exactly.
>
> If I would like to meet this target, it does whether mean I have to modify
> underline XML parser layer, like libxml, not Axis2/C source code
> itself?
Yes it is parser abstraction layer, To be precise I would say it is a
part of Axis2/C code.[1]
If you don't have a libxml2 dependency please try to use Axis2/C with
guththila parser and see whether it fix your problem[2].
thanks,
Dinesh
1.http://svn.apache.org/repos/asf/webservices/axis2/trunk/c/axiom/src/parser/libxml2/
2.http://svn.apache.org/repos/asf/webservices/axis2/trunk/c/INSTALL
--
Dinesh Premalal
http://feeds.feedburner.com/Dinesh
GPG ID : A255955C
GPG Key Finger Print : C481 E5D4 C27E DC34 9257 0229 4F44 266E A255 955C
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------
We won't tell. Get more on shows you hate to love
(and love to hate): Yahoo! TV's Guilty Pleasures list.