2

初めてSOAPWebサービスを使用していますが、SOAPサーバーの呼び出しに問題があります。WSDL SOAPリクエストを検索しましたが、問題を解決できません。これは私のWSDLのスニペットです

<s:complexType name="VerHeader">
    <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="HD1" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="HD2" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="HD3" type="s:string"/>
    </s:sequence>
    <s:anyAttribute/>
</s:complexType>

これらのHD1、HD2、およびHD3変数で、ユーザー名、パスワード、およびいくつかのIDを送信する必要があります。また、これらのリンクを試しました。SOAP呼び出しでPHP配列を渡し、PHPを使用したWSDLSoapRequestを使用してSoapヘッダーを送信します。

これが私が試したが機能していないことです。コードを実行するたびに失敗メッセージが送信されます。コードまたはロジックの何が問題になっているのか理解できますか?

$soap = new SoapClient("http://example.com/verifyrecord.asmx?WSDL");
$header = array('HD1'=>'000000023','HD2'=>'val2','HD3'=>'val2');
$header = new SoapHeader('http://www.example.com/', 'VerHeader ', $header);

$soap->__setSoapHeaders(array($header));
4

3 に答える 3

1

問題を解決しました。php関数を使用するのではなく、xmlファイルを手動で作成してsoapサーバーに送信することで解決しました。他の人に役立つように、私の答えの例を投稿しました。助けてくれてありがとう。

// the xml to send
$xml = '<?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>
    <VerHeader xmlns="http://www.example.com/">
      <HD1>000000000117</HD1>
      <HD1>user</HD1>
      <HD1>password</HD1>
    </VerHeader>
  </soap:Header>
  <soap:Body>
    <m:VerifyTransaction xmlns:m="http://www.example.com/">
        <m:object1>45344</m:object1>
        <m:object2>5545437</m:object2>
    </m:VerifyTransaction>
  </soap:Body>
</soap:Envelope>';
// build your http request
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => "Content-type: text/xml\r\n",
'validateRequest'=>false,
'content' => $xml,
'timeout' => 10,
),
));

// send it
echo $xmlstring = file_get_contents('http://example.com/VerifyThis/VerifyThis.asmx?wsdl', false, $context); 
于 2012-06-07T05:15:01.660 に答える
0

このようにしてみてください私は私の英国のメールAPIにこれを使用しました..そしてそれはうまくいきました

<?php 

 $LoginWebRequest = new stdClass();
 $LoginWebRequest->Username = 'xxx cant show here xxx';
$LoginWebRequest->Password = 'xxx cant show here xxx';

//echo "<pre>";  print_r($LoginWebRequest); "</pre>"; exit;

$Login = new stdClass();
$Login->loginWebRequest = $LoginWebRequest;

 //echo "<pre>";  print_r($Login); "</pre>"; exit; 

 $soapClient = new SoapClient('https://qa-api.ukmail.com/Services/UKMAuthenticationServices/UKMAuthenticationService.svc?wsdl');
 $LoginResponse = $soapClient->Login($Login);

  ?>
于 2012-05-17T11:27:46.207 に答える
0

これはいけません

new SoapHeader('http://www.example.com/', 'VerHeader', $header);

なれ

new SoapHeader('http://www.example.com/verifyrecord', 'VerHeader', $header);

于 2012-05-16T16:37:33.273 に答える