私はいくつかの問題を抱えていますが、私はおそらく私のリーグから外れていますが、私はこれを学習のために行います。複雑なwsdlを使用するためのビルド配列 - PHP
私はSOAPサービスを消費しようとしています。私の人生は、サーバーが受け入れる配列を構築できません。
WSDLは、ここに表示されている:
http://metrolive.telenor.no/kapaks-facade-soap-web/services/KapaksFacade70SoapWrapper/wsdl
私はこれを行うことができますし、それは完全に正常に動作します:
$tlf = new SoapVar(
array(
new SoapVar(
array(
'ns2:connectionNumber' => 12345678,
'ns2:connectionNumberType' => "T",
'ns2:requestedProduct' => "OA"
), SOAP_ENC_OBJECT, null, null, null, 'http://web.soap.v70.kapaks.facade.metro2.telenor.com'
)
), SOAP_ENC_OBJECT, null, null, null, 'http://dto.common.v70.kapaks.facade.metro2.telenor.com'
);
$client = new SoapClient($kapaks_wsdl, $wsdl_options);
$result = $client->validateProductSoap($tlf);
これは、このXMLを生成します(wiresharkのから)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org /soap/envelope/"
xmlns:ns1="http://web.soap.v70.kapaks.facade.metro2.telenor.com"
xmlns:ns2="http://dto.common.v70.kapaks.facade.metro2.telenor.com">
<SOAP-ENV:Header/><SOAP-ENV:Body><ns1:validateProductSoap><ns1:BOGUS>
<ns2:connectionNumber>12345678</ns2:connectionNumber>
<ns2:connectionNumberType>T</ns2:connectionNumberType>
<ns2:requestedProduct>OA</ns2:requestedProduct></ns1:BOGUS>
</ns1:validateProductSoap></SOAP-ENV:Body></SOAP-ENV:Envelope>
しかし、私は "アドレス"ノードからプロパティを要求する必要があります(それはノードですか?)。 I私は日本にされている配列、にこれをマップする方法を見つけ出すことはできません...
このXMLはカールで動作します(SOAP-UIからStraigt)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://web.soap.v70.kapaks.facade.metro2.telenor.com"
xmlns:dto="http://dto.common.v70.kapaks.facade.metro2.telenor.com">
<soapenv:Header/>
<soapenv:Body>
<web:validateProductSoap>
<web:arg_0_0>
<dto:address>
<dto:houseLetter>A</dto:houseLetter>
<dto:houseNumber>12</dto:houseNumber>
<dto:municipalityNumber>0000</dto:municipalityNumber>
<dto:streetCodeType>V</dto:streetCodeType>
<dto:streetName>Street</dto:streetName>
</dto:address>
<dto:requestedProduct>OA</dto:requestedProduct>
</web:arg_0_0>
</web:validateProductSoap>
</soapenv:Body>
</soapenv:Envelope>
カールアプローチ私にxml応答を与えますが、フロントエンドビューに渡すために、soapclientが生成する配列/オブジェクトが必要です。
アドレスタグ内の内容を要求するsoapclientリクエストはどのように生成できますか?または、soapclientが提供するものと同一の配列/オブジェクトを作成しますか?
DOMDocument :: loadXML()のようなものはありますか? – frz3993
これはcurl-xmlレスポンスをarray/objectに変換するのですか? – kimhaak
$ wsdl_optionsを教えてください。私はサービスを呼び出そうとしていますが、私は許可されていないと述べています。 –