2017-07-27 6 views
1

サードパーティのサーバーからデータを取得してMagento DBに保存するカスタムMagento2 Soap APIを作成しました。 データ処理です​​べてが正常に機能しています。今すぐ結果を印刷すると、Objectフォームになりますが、XML形式でのみ必要です。オブジェクト([結果ObjectからXMLへMagento2 SOAP APIレスポンスを変更する方法

はstdClass:

$wsdlurl = 'MagentoStore/soap?wsdl&services=CustomDataApiManagementV1'; 
$token = 'XXXXXXXXXXXX'; 
    $opts = ['http' => ['header' => "Authorization: Bearer " . $token]]; 
    $context = stream_context_create($opts); 
    $addArgs = array('xmldata'=> 'testData'); 

    try{ 
     $soapClient = new SoapClient($wsdlUrl); 
     $soapClient->setSoapVersion(SOAP_1_2); 
     $soapClient->setStreamContext($context); 
     $soapResponse = $soapClient 
        ->CustomDataApiManagementV1ProcessData($addArgs); 
     print_r($soapResponse); 
    }catch(Exception $e){ 
     echo 'error'; 
    } 

これますprint_r($ soapResponse)として、以下の結果を示している。ここで は、私は、要求を行うために使用していたコードがあります] =>成功)

結果はXML形式でのみ必要です。

既に誰かがそれに取り組んでいるかどうか教えてください。

+0

からあなたの

<root><result>Success</result></root> 

以下のようになりますでしょうソースを使用して、XMLにして、あなたのオブジェクトを変換するために 'wddx_serialize_value'機能を試したことがありますか?以下のコード

$soapResponse = array_flip((array) $soapResponse); $xml = new SimpleXMLElement('<root/>'); array_walk_recursive($soapResponse, array ($xml, 'addChild')); print $xml->asXML(); 

をお試しくださいこのように 'echo wddx_serialize_value($ soapResponse);' –

+0

あなたの応答Shahrozeに感謝します!このようにして、クライアントサイト、つまりMagento SOAP APIへのリクエストを行っている場所からのみデータを変更できます。 Magento APIの終了時にこのレスポンスを変更するようにしてください。そのため、ユーザーにリクエストするAPIは最後に行う必要はありません。 – user8374657

答えて

0
+0

こんにちは、 ありがとうございます。 実際には、クライアント側ではなくサーバー側で変更したいと考えています。 つまり $ soapResponse = $ soapClient - > CustomDataApiManagementV1ProcessData($ addArgs); $ soapResponseはXML形式である必要があります。 – user8374657

+0

$ soapResponseにxml形式の特別な理由はありますか?レスポンスがxml形式を取得するかどうかはわかりません。 – Vino

関連する問題