Cedric Peyruqueou wrote:

Hello,

I'm trying to use axis with the axiom client to connect to a public web service, these are the information I have on this webservice:

----------------------------------------------------------

POST /webservicedemo/service.asmx HTTP/1.1

Host: www.dagorsoftware.com

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://tempuri.org/HelloWho";

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>

<soap:Body>

<HelloWho xmlns="http://tempuri.org/";>

<firstName>string</firstName>

<lastName>string</lastName>

</HelloWho>

</soap:Body>

</soap:Envelope>

--------------------------------------------------------------

This is my class:

---------------------------------------------------

package samples.quickstart.clients;

import org.apache.axiom.om.OMAbstractFactory;

import org.apache.axiom.om.OMElement;

import org.apache.axiom.om.OMFactory;

import org.apache.axiom.om.OMNamespace;

import org.apache.axis2.Constants;

import org.apache.axis2.addressing.EndpointReference;

import org.apache.axis2.client.Options;

import org.apache.axis2.client.ServiceClient;

public class AXIOMClient {

private static EndpointReference targetEPR = new EndpointReference("http://www.dagorsoftware.com/webservicedemo/service.asmx";);

public static OMElement sendRequest(String symbol, String price) {

OMFactory fac = OMAbstractFactory.getOMFactory();

OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/HelloWho";, "tns");

OMElement method = fac.createOMElement("HelloWho", omNs);

OMElement value1 = fac.createOMElement("firstName", omNs);

value1.addChild(fac.createOMText(value1, symbol));

method.addChild(value1);

OMElement value2 = fac.createOMElement("lastName", omNs);

value2.addChild(fac.createOMText(value2,price));

method.addChild(value2);

return method;

}

public static void main(String[] args) {

try {

//OMElement getPricePayload = getPricePayload("WSO");

OMElement updatePayload = sendRequest("WSO", "123.42");

Options options = new Options();

options.setTo(targetEPR);

options.setTransportInProtocol(Constants.TRANSPORT_HTTP);

ServiceClient sender = new ServiceClient();

sender.setOptions(options);

OMElement result = sender.sendReceive(updatePayload);

System.out.println(" result : " + result.getFirstElement().getText());

} catch (Exception e) {

e.printStackTrace();

}

}

----------------------------------------------------

This is the error I receive:

[java] org.apache.axis2.AxisFault: Server did not recognize the value of HTTP Header SOAPAction: urn:anonOutInOp.

[java] at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)

[java] at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)

[java] at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)

[java] at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)

[java] at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)

[java] at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)

[java] at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)

[java] at samples.quickstart.clients.AXIOMClient.main(AXIOMClient.java:59)

[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

[java] at java.lang.reflect.Method.invoke(Method.java:324)

[java] at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)

[java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)

[java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:747)

[java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:201)

[java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:104)

[java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)

[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

[java] at java.lang.reflect.Method.invoke(Method.java:324)

[java] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)

[java] at org.apache.tools.ant.Task.perform(Task.java:348)

[java] at org.apache.tools.ant.Target.execute(Target.java:357)

[java] at org.apache.tools.ant.Target.performTasks(Target.java:385)

[java] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)

[java] at org.apache.tools.ant.Project.executeTarget(Project.java:1298)

[java] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)

[java] at org.apache.tools.ant.Project.executeTargets(Project.java:1181)

[java] at org.apache.tools.ant.Main.runBuild(Main.java:698)

[java] at org.apache.tools.ant.Main.startAnt(Main.java:199)

[java] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)

[java] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)

I think I have a problem because I don’t send the value of the header parameter SOAPAction, but I don’t know where to put this information in my code.


Please try setting Soapaction as follows.
options.setAction("http://tempuri.org/HelloWho";)

http://today.java.net/pub/a/today/2006/12/13/invoking-web-services-using-apache-axis2.html will help you to get more information on Axis2 service invocation mechanism.

Thank you very much for your help.

Best Regards,

Cédric Peyruqueou



--
Charitha Kankanamge
WSO2 inc.
Flower Road, Colombo 07
+94 714268070

A bug in the hand is better than one as yet undetected



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to