標籤:
日前調用第三方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);
C#/PHP調用有SoapHeader的WebService