Anne
On 4/3/06, Tony Hamill <[EMAIL PROTECTED]> wrote:
Hi,
I am attempting to call a very basic "HelloWorld" .Net WS using AXIS. The XML submitted from my AXIS client looks like
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:HelloWorld soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://tempuri.org/">
<p_name xsi:type="xsd:string">John</p_name>
</ns1:HelloWorld>
</soapenv:Body>
</soapenv:Envelope>
While this invokes the service it does not seem to pass the parameter in. I assumed this was because the p_name parameter was not qualified so when I manually modify the XML to
<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>
<ns1:HelloWorld xmlns:ns1="http://tempuri.org/">
<ns1:p_name xsi:type="xsd:string">John</ns1:p_name>
</ns1:HelloWorld>
</soap:Body>
</soap:Envelope>
and submit this via a SOAP Tool I have it works fine. My question is how do I qualify the parameter with the ns1: qualification in code? or how do I set the default namespace as http://tempuri.org/ so the child node will inherit it?
Also do child entities not inherit the namespace of their parent? i.e. Should the p_name parameter need qualification? (obviously it does but I don't really understand why)
Any help greatly appreciated.
Java Source
/*
* Main.java
*
* Created on 14 March 2006, 20:17
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package javaapplication1;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
/**
*
* @author
*/
public class Main {
/** Creates a new instance of Main */
public Main() {}
/**
* @param args the command line arguments
*/
public static void main(String [] args) {
try {
String endpoint = "http://localhost:8090/com.company.AXISInterOp/Service1.asmx";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://tempuri.org/HelloWorld");
call.setOperationName(new QName("http://tempuri.org/", "HelloWorld") );
call.addParameter("p_name",
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[] { new String("John") } );
System.out.println("Sent 'John!', got '" + ret + "'");
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
