You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Krankurs Leonid <lk...@ford.com> on 2006/09/01 23:01:41 UTC
Axis C++ client, Call->invoke
I have the following scenario (WSDL, message) for Axis C++ client
WSDL, defines the service with a method "evaluate"
<?xml version="1.0" encoding="utf-16"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:pds="http://pdservice.services.aps.some.com/"
xmlns:xsd1="http://aps.some.com/to/context" name="PolicyDecisionService"
targetNamespace="http://pdservice.services.aps.some.com/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema>
<xsd:import schemaLocation="cs-xacml-schema-context-01.xsd"
namespace="http://aps.some.com/to/context" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="EvaluationRequest">
<wsdl:part name="request" element="xsd1:Request" />
</wsdl:message>
<wsdl:message name="EvaluationResponse">
<wsdl:part name="response" element="xsd1:Response" />
</wsdl:message>
<wsdl:portType name="PolicyDecison">
<wsdl:operation name="evaluate">
<wsdl:input message="pds:EvaluationRequest" />
<wsdl:output message="pds:EvaluationResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="PolicyDecisionSOAP" type="pds:PolicyDecison">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="evaluate">
<soap:operation
soapAction="http://pdservice.services.aps.some.com/PolicyDecisionService/evaluate"
/>
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="PolicyDecisionService">
<wsdl:port name="PolicyDecision" binding="pds:PolicyDecisionSOAP">
<soap:address
location="http://wwwdev.apspdp.some.com:80/ApsPdpEARWeb/services/PolicyDecision"
/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Message to be sent
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<Request xmlns="http://aps.some.com/to/context">
<Subject
SubjectCategory="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
xmlns="">
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name" xmlns="">
<AttributeValue xmlns="">$arathod4@some.com</AttributeValue>
</Attribute>
<Attribute AttributeId="attribute"
DataType="http://www.w3.org/2001/XMLSchema#string" xmlns="">
<AttributeValue xmlns="">attribute</AttributeValue>
</Attribute>
</Subject>
<Resource xmlns="">
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType="http://www.w3.org/2001/XMLSchema#anyURI" xmlns="">
<AttributeValue xmlns="">APSUI:DefinePolicy</AttributeValue>
</Attribute>
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:scope"
DataType="http://www.w3.org/2001/XMLSchema#string" xmlns="">
<AttributeValue xmlns="">Immediate</AttributeValue>
</Attribute>
</Resource>
<Action xmlns="">
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
DataType="http://www.w3.org/2001/XMLSchema#string" xmlns="">
<AttributeValue xmlns="">update</AttributeValue>
</Attribute>
</Action>
</Request>
</soapenv:Body>
</soapenv:Envelope>
and message itself have no "info" about method "evaluate"
i use .Net Web service Studio 2.0 for test message flow - message goes out
and comes in - the service recognizes the message and responces as expected.
in the my Axis C++ scenario i have pre-seialized object to <Request> ...
</Request>.
i have a problem to make it work (send a message) by use of Call class
m_pCall = new Call ();
m_pCall->setEndpointURI
("http://wwwdev.apspdp.some.com/ApsPdpEARWeb/services/PolicyDecision/");
m_pCall->setTransportProperty (SOAPACTION_HEADER,
"PolicyDecision#evaluate");
m_pCall->setSOAPVersion (SOAP_VER_1_1);
(1) m_pCall->setOperation ("evaluate",
"http://wwwdev.apspdp.some.com/ApsPdpEARWeb/services/PolicyDecision/");
AnyType* pAny = new AnyType();
AnyType* any;
pAny->_size = 1;
pAny->_array = new char*[1];
pAny->_array[0] = strdup(request.c_str()); // "request" keeps serialized
object <Request> ....</Request>
m_pCall->addAnyObject(pAny);
if ( AXIS_SUCCESS == m_pCall->invoke () )
....
it throws exception, the trace:
01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 HTTPChannel > operator<<
@00338670,------------>
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I "POST
/ApsPdpEARWeb/services/PolicyDecision/ HTTP/1.1
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I Host:
wwwdev.apspdp.some.com:80
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I Content-Type:
text/xml; charset=UTF-8
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I SOAPAction:
"PolicyDecision#evaluate"
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I Content-Length:
nnnn
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I "
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 HTTPChannel <
operator<< @00338670,[60613A00] <`a:.>
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 HTTPChannel >
operator<< @00338670,------------>
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I "<?xml
version='1.0' encoding='utf-8' ?>
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I <SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I <SOAP-ENV:Body>
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I <ns1:evaluate
xmlns:ns1="http://wwwdev.apspdp.some.com/ApsPdpEARWeb/services/PolicyDecision/">
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I <Request
xmlns="http://aps.some.com/to/context"><Subject
SubjectCategory="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
xmlns=""><Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name"
xmlns=""><AttributeValue
xmlns="">$rrrrrr4@some.com</AttributeValue></Attribute><Attribute
AttributeId="attribute" DataType="http://www.w3.org/2001/XMLSchema#string"
xmlns=""><AttributeValue
xmlns="">attribute</AttributeValue></Attribute></Subject><Resource
xmlns=""><Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType="http://www.w3.org/2001/XMLSchema#anyURI" xmlns=""><AttributeValue
xmlns="">APSUI:DefinePolicy</AttributeValue></Attribute><Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:scope"
DataType="http://www.w3.org/2001/XMLSchema#string" xmlns=""><AttributeValue
xmlns="">Immediate</AttributeValue></Attribute></Resource><Action
xmlns=""><Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
DataType="http://www.w3.org/2001/XMLSchema#string" xmlns=""><AttributeValue
xmlns="">update</AttributeValue></Attribute></Action></Request></ns1:evaluate>
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I </SOAP-ENV:Body>
[01/09/2006 16:37:49:943 Eastern Daylight Time] 3240 - I
</SOAP-ENV:Envelope>
.................................
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I 51, "
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I Server sent HTTP
error: 'Not Found'
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I "
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 HTTPTransportException
> getMessageForExceptionCode @0012F590,51
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 HTTPTransportException
< getMessageForExceptionCode @0012F590,"HTTPTransportException:HTTP
transport error"
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 HTTPTransportException
> getMessageForExceptionCode @0012F590,51
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 HTTPTransportException
< getMessageForExceptionCode @0012F590,"HTTPTransportException:HTTP
transport error"
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 HTTPTransportException
< HTTPTransportException @0012F590
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 ClientAxisEngine X
process @00570090,------------>
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I caught
AxisException(3, "HTTPTransportException:HTTP transport error
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I Server sent HTTP
error: 'Not Found'
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I ")
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 AxisGenException >
AxisGenException @0012F99C,------------>
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I 51,
"HTTPTransportException:HTTP transport error
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I Server sent HTTP
error: 'Not Found'
[01/09/2006 16:37:49:953 Eastern Daylight Time] 3240 - I "
looks like
<ns1:evaluate
xmlns:ns1="http://wwwdev.apspdp.some.com/ApsPdpEARWeb/services/PolicyDecision/">
</ns1:evaluate>
that inserted by engine breakes message structure. When the call (1)
m_pCall->setOperation is ommited
the body has not even created.
What is wrong?
Is the call m_pCall->setOperation(...) mandatory?
What is the proper way to use m_pCall->invoke() in the scenario (WSDL,
message) above?
If m_pCall->invoke() is not applicable, what is the best way for this case
(WSDL, message)
Please Help
Regards,
--
View this message in context: http://www.nabble.com/Axis-C%2B%2B-client%2C-Call-%3Einvoke-tf2204816.html#a6106167
Sent from the Axis - C++ - User forum at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org