2017-04-13 7 views
1

私はPHP SoapClientを使用していますが、サードパーティが望むようにリクエストフォーマットを取得することに問題があります。PHP SoapClient - 間違った場所での操作

彼らはこのようにそれをしたい:私のリクエストでアクションがどのように

POST /service.asmx HTTP/1.1 
Host: service.com 
Content-Type: application/soap+xml; charset=utf-8; action="http://someservice" 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <Order> 
     <json>string</json> 
    </Order> 
    </soap12:Body> 
</soap12:Envelope> 

のお知らせ:、、しかし

POST /service.asmx HTTP/1.1 
Host: service.com 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
    <Order xmlns="http://someservice"> 
     <json>string</json> 
    </Order> 
    </soap12:Body> 
</soap12:Envelope> 

私はのSoapClientを使用して、それを得るように見えることができます最も近いが、このようなものですhttpヘッダーにあり、理想的な形式のアクションはOrderタグ内にあります。つまり、そのアクションが配置されている場所を生成しているSoapClientです。WSDLからその特定のURLを取得しますが、それは自分のコードでさえありません。

SoapClientに正しい場所に置くようにするにはどうすればよいですか?私の部分については、必要なだけ何が含ましようと、これは基本的にコードです:私の頭を叩いてから数日後

$this->client = new SoapClient($this->wsdl, array(
       'soap_version' => SOAP_1_2, 
       'encoding' => 'UTF-8', 
       'stream_context' => stream_context_create($context), 
       'trace' => true, 
       'exceptions' => true, 
      ) 
     ); 
    $json = json_encode($request); 

    // Prepare the xml 
    $xml = array(); 
    $xml[] = new SoapVar($json, XSD_STRING, 'string', 'http://www.w3.org/2001/XMLSchema', 'json'); 

    $this->finalXML = new SoapVar($xml, SOAP_ENC_OBJECT, null, null, 'Order'); 
    $this->response = $this->client->CreateOrder($this->finalXML); 
+0

'$ context'とは何ですか? '$ request'とは何ですか?上記のXMLとどのように関連していますか?あなたのコードのどこにでも 'http:// someservice'は表示されません。 – miken32

+0

$ contextは私のヘッダーの1つに関連しており、質問には重要ではありません。 $リクエストはjsonに関連しており、XMLには関係ありません。私が参照しているURLは自分のコードではなくWSDLから生成されます。 –

+0

サンプルコードがサンプルXMLにどのように関係しているかを把握しようとしています。 – miken32

答えて

1

、私はこれを発見し、私のために受け入れられ、ハックソリューションの作業を行うことになった:

Change SOAP request format

あまり書いていないSoap APIを使って作業しているときは、できることはあまりありません。

関連する問題