• java axis调用带有soap头(soapheader)的.net webservice


    使用axis调用.net带soapheader的webservice是如何实现的,现在贴出代码

    <?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>
      <AuthHeaderCS xmlns="http://tempuri.org/">
          <Username>string</Username>
          <Password>string</Password>
        </AuthHeaderCS>
      </soap:Header>
      <soap:Body>
        <StarTrans xmlns="http://tempuri.org/" />
      </soap:Body>
    </soap:Envelope>
    View Code
    import java.rmi.RemoteException;
    
    import javax.xml.namespace.QName;
    import javax.xml.rpc.ParameterMode;
    import javax.xml.rpc.ServiceException;
    import javax.xml.soap.SOAPException;
    
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import org.apache.axis.encoding.XMLType;
    import org.apache.axis.message.SOAPHeaderElement;
    
    public class aa
    {
        public static void main(String[] args) throws ServiceException, RemoteException
        {
            try
            {
                // 服务端的url,需要根据情况更改。
                String endpointURL = "http://192.168.0.209:7080/DataShareWebService.asmx?wsdl";
                Service service = new Service();
                Call call = (Call) service.createCall();
                call.setTargetEndpointAddress(new java.net.URL(endpointURL));
                call.setSOAPActionURI("http://tempuri.org/" + "StarTrans");
                call.setOperationName(new QName("DataShareWebService", "StarTrans"));// 设置操作的名称。
                // 由于需要认证,故需要设置调用的用户名和密码。
                SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("http://tempuri.org/", "AuthHeaderCS");
                soapHeaderElement.setNamespaceURI("http://tempuri.org/");
                try
                {
                    soapHeaderElement.addChildElement("Username").setValue("admin");
                    soapHeaderElement.addChildElement("Password").setValue("123");
                }
                catch (SOAPException e)
                {
                    e.printStackTrace();
                }
                call.addHeader(soapHeaderElement);
                call.setReturnType(XMLType.XSD_STRING);// 返回的数据类型
                call.addParameter("op1", XMLType.XSD_STRING, ParameterMode.IN);// 参数的类型
                String ret = (String) call.invoke(new Object[] { "11111" });// 执行调用
                System.out.println(ret);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
    View Code
  • 相关阅读:
    如何让你的Sublime和Codeblocks支持C++11
    Python print不换行输出的替代方法
    阶梯博弈
    hdu4633_Polya定理
    Ural_1169_Pairs
    ACM竞赛中的魔方问题专题(不定时更新)
    LintCode 35. 翻转链表
    windows中mysql5.7中配置中文字符集和默认datadir
    CentOS7使用打开关闭防火墙与端口
    关于阿里巴巴开发手册"不得使用外键与级联,一切外键概念必须在应用层解决"的疑惑
  • 原文地址:https://www.cnblogs.com/chenghu/p/5612102.html
Copyright © 2020-2023  润新知