You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Ahmetspahic, Nermin" <Na...@envestnetpmc.com> on 2002/08/14 18:03:01 UTC
Soap 2.0 vs Axis Client code..please help.
Hi,
we are attempting to make a webservice request using an axis client. We were succesful at this with a Soap 2.0 Client.
Attached is our Soap 2.0 code that works, then our Axis client code that doesn't (it compiles), then the error we get when running TestClient. Any help would be greatly appreciated.
Nermin
Here is our Soap 2.0 client code that works:
----------------------------------------------
import java.net.*;
import java.util.*;
import org.apache.soap.*; // Body, Envelope, Fault, Header
import org.apache.soap.rpc.*; // Call, Parameter, Response
public class TestClient
{
public static void main( String[] args ) throws Exception
{
URL url = new URL( "http://www.xxx.xxx/soap/servlet/rpcrouter" );
String urn = "urn:xxxMethod";
Call call = new Call();
call.setTargetObjectURI( urn );
call.setMethodName("getInfo");
call.setEncodingStyleURI( Constants.NS_URI_SOAP_ENC );
Vector params = new Vector( );
params.addElement (new Parameter("param1", String.class, "134", null));
params.addElement (new Parameter("param2", String.class, "ABC", null));
params.addElement (new Parameter("param3", String.class, "junk", null));
params.addElement (new Parameter("param4", String.class, "asdf", null));
params.addElement (new Parameter("param5", String.class, "2002-07-27", null));
params.addElement (new Parameter("param6", String.class, "ABCDEFG", null));
params.addElement (new Parameter("param7", String.class, "", null));
call.setParams( params );
try
{
System.out.println( "invoke service\n" + " URL= " + url + "\n URN =" + urn );
Response response = call.invoke( url, "" ); // invoke the service
if( !response.generatedFault() )
{
Parameter result = response.getReturnValue(); // response was OK
System.out.println( "Result= " + result.getValue() );
}
else
{
Fault f = response.getFault(); // an error occurred
System.err.println( "Fault= " + f.getFaultCode() + ", " + f.getFaultString() );
}
}
catch( SOAPException e ) // call could not be sent properly
{
System.err.println( "SOAPException= " + e.getFaultCode() + ", " + e.getMessage() );
}
}
}
----------------------------------------------
Here is our Axis client that we can't get to work:
----------------------------------------------
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class TestClient
{
public static void main(String [] args) {
try {
String endpoint = "http://www.xxx.xxx/soap/servlet/rpcrouter";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("http://soapinterop.org/", "getMethod") );
// Call to addParameter/setReturnType as described in user-guide.html
call.addParameter("param1",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.addParameter("param2",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.addParameter("param3",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.addParameter("param4",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.addParameter("param5",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.addParameter("param6",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.addParameter("param7",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.Constants.XSD_STRING);
String ret = (String) call.invoke( new Object[] { "134","ABC","junk","asdf","2002-07-27","ABCDEFG","" } );
System.out.println( ret );
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
Here is our error
----------------------------------------------
C:\axis-1_0>java TestClient
- Mapping Exception to AxisFault
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
faultString: service 'http://soapinterop.org/' unknown
faultActor: /soap/servlet/rpcrouter
faultDetail:
stackTrace: AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
faultString: service 'http://soapinterop.org/' unknown
faultActor: /soap/servlet/rpcrouter
faultDetail:
service 'http://soapinterop.org/' unknown
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:135)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(Deseri
alizationContextImpl.java:904)
at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1398)
at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLVa
lidator.java:1019)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.disp
atch(XMLDocumentScanner.java:1256)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentS
canner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:948)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Deserializa
tionContextImpl.java:213)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:457)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:362)
at org.apache.axis.client.Call.invokeEngine(Call.java:2046)
at org.apache.axis.client.Call.invoke(Call.java:2016)
at org.apache.axis.client.Call.invoke(Call.java:1786)
at org.apache.axis.client.Call.invoke(Call.java:1711)
at org.apache.axis.client.Call.invoke(Call.java:1251)
at TestClient.main(TestClient.java:32)
service 'http://soapinterop.org/' unknown
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.
java:135)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(Deseri
alizationContextImpl.java:904)
at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1398)
at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLVa
lidator.java:1019)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.disp
atch(XMLDocumentScanner.java:1256)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentS
canner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:948)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Deserializa
tionContextImpl.java:213)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:457)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:362)
at org.apache.axis.client.Call.invokeEngine(Call.java:2046)
at org.apache.axis.client.Call.invoke(Call.java:2016)
at org.apache.axis.client.Call.invoke(Call.java:1786)
at org.apache.axis.client.Call.invoke(Call.java:1711)
at org.apache.axis.client.Call.invoke(Call.java:1251)
at TestClient.main(TestClient.java:32)
service 'http://soapinterop.org/' unknown
Re: Soap 2.0 vs Axis Client code..please help.
Posted by Sam Ruby <ru...@apache.org>.
Ahmetspahic, Nermin wrote:
>
> we are attempting to make a webservice request using an axis client.
> We were succesful at this with a Soap 2.0 Client. Attached is our
> Soap 2.0 code that works, then our Axis client code that doesn't (it
> compiles), then the error we get when running TestClient. Any help
> would be greatly appreciated.
>
> Here is our Soap 2.0 client code that works:
> ----------------------------------------------
> String urn = "urn:xxxMethod";
> call.setTargetObjectURI( urn );
> call.setMethodName("getInfo");
> ----------------------------------------------
>
> Here is our Axis client that we can't get to work:
> ----------------------------------------------
> call.setOperationName(new QName("http://soapinterop.org/", "getMethod") );
>
> Here is our error
> ----------------------------------------------
> faultString: service 'http://soapinterop.org/' unknown
Try making the operation name match the target object URI and method name.
- Sam Ruby