私は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);
'$ context'とは何ですか? '$ request'とは何ですか?上記のXMLとどのように関連していますか?あなたのコードのどこにでも 'http:// someservice'は表示されません。 – miken32
$ contextは私のヘッダーの1つに関連しており、質問には重要ではありません。 $リクエストはjsonに関連しており、XMLには関係ありません。私が参照しているURLは自分のコードではなくWSDLから生成されます。 –
サンプルコードがサンプルXMLにどのように関係しているかを把握しようとしています。 – miken32