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());
        }
      }

}

 

posted on 2012-07-02 17:37  芸芸  阅读(429)  评论(0)    收藏  举报

导航