java调用.net写的带有soaphead的webservice
需要引用axis包
请求xml串:
POST /SMSend/Service.asmx HTTP/1.1 Host: 10.77.5.37
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Insert"
<?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:Header>
<MySoapHeader xmlns="http://tempuri.org/">
<Name>string</Name>
<PassWord>string</PassWord>
</MySoapHeader>
</soap:Header>
<soap:Body>
<Insert xmlns="http://tempuri.org/">
<UserID>string</UserID>
<UserName>string</UserName>
<OrgID>string</OrgID>
<OrgName>string</OrgName>
<MessageInfo>string</MessageInfo>
<ReNum>string</ReNum>
</Insert>
</soap:Body>
</soap:Envelope>
java
详细代码:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.SOAPHeaderElement;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.soap.SOAPException;
import org.apache.axis.encoding.XMLType;
public class TestClient {
public static void main(String [] args) {
try {
String endpoint = "http://10.77.5.37/SMSend/Service.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/Insert");
call.setOperationName(new QName("http://tempuri.org/","Insert"));
// 由于需要认证,故需要设置调用的用户名和密码。
SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("http://tempuri.org/", "MySoapHeader");
soapHeaderElement.setNamespaceURI("http://tempuri.org/");
try
{
soapHeaderElement.addChildElement("Name").setValue("name");
soapHeaderElement.addChildElement("PassWord").setValue("password");
}
catch (SOAPException e)
{
e.printStackTrace();
}
call.addHeader(soapHeaderElement);
call.setReturnType(XMLType.XSD_STRING);// 返回的数据类型
call.addParameter(new QName("http://tempuri.org/","UserID"), XMLType.XSD_STRING, ParameterMode.IN);// 参数的类型
call.addParameter(new QName("http://tempuri.org/","UserName"), XMLType.XSD_STRING, ParameterMode.IN);// 参数的类型
call.addParameter(new QName("http://tempuri.org/","OrgID"), XMLType.XSD_STRING, ParameterMode.IN);// 参数的类型
call.addParameter(new QName("http://tempuri.org/","OrgName"), XMLType.XSD_STRING, ParameterMode.IN);// 参数的类型
call.addParameter(new QName("http://tempuri.org/","MessageInfo"), XMLType.XSD_STRING, ParameterMode.IN);// 参数的类型
call.addParameter(new QName("http://tempuri.org/","ReNum"), XMLType.XSD_STRING, ParameterMode.IN);// 参数的类型
String ret = (String)call.invoke(new Object[]{"001", "张三","1002","李四","测试java","13119912020"});// 执行调用
System.out.println(ret);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
浙公网安备 33010602011771号