5

基本的に、SOAPヘッダーを次のようにしたい:

<soapenv:Header>
  <v1:loginDetails>
     <v11:Id>0</v11:Id>
     <v11:username>MEMBERS</v11:username>
     $ <v11:password>0x909711E5,0xE301F82A,0x0E2783CC,0xAF6BC3DB,0x57727CFB</v11:password>
  </v1:loginDetails>
   </soapenv:Header>
<soapenv:Body>
  <v11:GetNextAvailableMemberNumberRequest>
     <v11:Id>1</v11:Id>
     <v11:memberId>1</v11:memberId>
  </v11:GetNextAvailableNumberRequest>
   </soapenv:Body>
</soapenv:Envelope>

しかし、代わりに、今私はこれを持っています:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www..com/membership/types/v1_0">
<SOAP-ENV:Header>
<ns1:loginDetails>
<item><key>siteId</key><value>0</value></item>
<item><key>Username</key><value>MEMBERSHIP</value></item>
<item><key>Password</key><value>P@ssw0rd</value></item>
</ns1:loginDetails>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:GetNextAvailableMemberNumberRequest/>
<param1>1</param1>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

そして、これは私が現在使用しているphpコードです:

$client = new SOAPClient('http://192.168.180.128:8010//membershipService?wsdl',array('trace' => true));
$client->__setSoapHeaders(null);
$headerbody = array ('siteId' => '0','Username' => 'MEMBERSHIP',
'Password' => 'P@ssw0rd');
$header = new SOAPHeader('http://www.com/club/services/membership/types/v1_0','loginDetails',$headerbody);
$client->__setSoapHeaders($header);

どこで間違ったのですか?ヘッダーを正しく構築できないようです。

4

5 に答える 5

5

配列の代わりに無名クラスを使用してみてください:

// Use standard class and set magic properties.
$header = new stdClass();
$header->siteId = '0';
$header->Username = 'MEMBERSHIP';
$header->Password = 'P@ssw0rd';
于 2013-06-20T14:57:19.123 に答える
0

タイプミスがありました:

$header = NEW stdClass() ;
于 2014-01-23T15:53:58.463 に答える
-2

$ headerbody = array('Id' => '0'、'username' =>'MEMBERSHIP'、'password' =>'P @ ssw0rd');

リンクhttp://php.net/manual/en/class.soapheader.phpを参照してください

また、SOAPHeaderコンストラクターで正しい名前空間(最初のパラメーター)を渡していることを確認してください

于 2012-06-20T14:06:05.427 に答える