C#/PHP調(diào)用有SoapHeader的WebService
日前調(diào)用第三方WebService接口時遇到了SoapHeader驗證的問題,記錄一下解決方法。
接口需要的格式:
<soapenv:Header> <ReqSOAPHeader xmlns="http://xxx.com"> <appKey>key</appKey> <authKey>pwd</authKey> </ReqSOAPHeader> <soapenv:Header>
C#:
//創(chuàng)建header類,注意屬性名 [DataContract(Namespace = "http://xxx.com")] public class ReqSOAPHeader { [DataMember] public string appKey { get; set; } [DataMember] public string authKey { get; set; } } //client 為根據(jù)wsdl生成的代理類 //創(chuàng)建并加入請求 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:
//創(chuàng)建Header類 //注意屬性名 class ReqSOAPHeader { public $appKey; public $authKey; public function __construct($app,$auth) { $this->appKey=$app; $this->authKey=$auth; } } //創(chuàng)建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);
浙公網(wǎng)安備 33010602011771號