1

PHP の SoapClient を介して Magento SOAP API に接続する際に問題が発生しています。次のコードを使用して、開発サーバーに小さなテスト PHP ファイルをセットアップしています。

<?php
$soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false));
$session = $soapC->__soapCall('login', array('TestUsr', 'test123'));
var_dump($session);
?>

PHP ファイルは、magento dev ビルドと同じサーバー上にあります。コマンド ラインから php スクリプトを実行すると、$session 変数が SoapFault オブジェクトを出力し、「XML ドキュメントがないようです」というエラーが表示されます。

これを解決する方法がわかりません。以下のコードを試すと、すべての API メソッドを出力できますが、何らかの理由で上記のログイン メソッドの呼び出しが問題を引き起こしています。

$soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false));
print_r($soapC->__getFunctions());
4

3 に答える 3

3

このエラーは通常、問題がサーバー側にあることを意味します。リクエストを処理するサーバーが有効な XML を出力していません。エラーやリダイレクトが発生していないことを確認します。

ブラウザでサーバー エンドポイントにアクセスするとどうなりますか?

于 2012-10-16T03:15:53.977 に答える
1

サーバーがwsdlファイルにアクセスしようとしたときに、Magentoがストアフロントに302リダイレクトを発行していたことが問題であることに気付きました。

これを修正するには、Magento管理パネルにログインし、[システム]->[構成]->[Web]に移動して、[ベースURLへの自動リダイレクト]をオフにしました。今では魅力のように機能します。

于 2012-10-17T18:40:08.167 に答える
0

リモート サーバーまたはローカル サーバーからphp.iniファイルを開き、always_populate_raw_post_data-1に設定します。

その後、Apache サーバーを再起動する必要があります。

再起動が完了したら、スクリプトを再度実行してください。

于 2017-02-14T12:26:45.973 に答える