• C#/PHP调用有SoapHeader的WebService


    日前调用第三方WebService接口时遇到了SoapHeader验证的问题,记录一下解决方法。

    接口需要的格式:

    <soapenv:Header>
        <ReqSOAPHeader xmlns="http://xxx.com">
            <appKey>key</appKey>
            <authKey>pwd</authKey>
        </ReqSOAPHeader>
    <soapenv:Header>

    C#:

        //创建header类,注意属性名
        [DataContract(Namespace = "http://xxx.com")]
        public class ReqSOAPHeader
        {
            [DataMember]
            public string appKey { get; set; }
            [DataMember]
            public string authKey { get; set; }
        }
    
        //client 为根据wsdl生成的代理类
        //创建并加入请求
        AddressHeader soapheader = AddressHeader.CreateAddressHeader("ReqSOAPHeader",   "http://xxx.com", new ReqSOAPHeader { appKey = "key", authKey = "pwd" });
        EndpointAddressBuilder eab = new EndpointAddressBuilder(client.Endpoint.Address);
        eab.Headers.Add(soapheader);
        client.Endpoint.Address = eab.ToEndpointAddress();

    PHP:

    //创建Header类
    //注意属性名
        class ReqSOAPHeader {  
            public $appKey;  
            public $authKey;  
            
            public function __construct($app,$auth) {  
                $this->appKey=$app;  
                $this->authKey=$auth;  
            } 
        }
    
    //创建soapclient并加入头
        $simple = new SoapClient(null, array('location'=>$location,'uri'=>'xxx.com','encoding'=>'UTF-8'));
        $auth = new ReqSOAPHeader("key", "pwd");
        $header = new SoapHeader('http://xxx.com', 'ReqSOAPHeader', $auth);
        $simple->__setSoapHeaders($header);
  • 相关阅读:
    mysql数据库的test类型
    jvm虚拟机分享课笔记
    内存模型中没有gc的是哪个
    jvm内存模型中-栈,方法区,程序计数器是线程安全的
    Random.nextInt()替换Math.random()
    异常抛出注意点
    缓存好文章
    java 实现serialVersionUID
    什么叫反向代理什么叫正向代理
    mysql count与sum的区别
  • 原文地址:https://www.cnblogs.com/himax/p/how_to_call_webservice_with_soapheader.html
Copyright © 2020-2023  润新知