2013-01-13 6 views
7

AmazonのMarketplace SDKをダウンロードしましたが、サンプルディレクトリのサンプルの1つを試しています。AmazonマーケットプレイスAPIリクエストで内部エラーが発生する

Caught Exception: Internal Error 
Response Status Code: 0 
Error Code: 
Error Type: 
Request ID: 
XML: RequestId: , ResponseContext: , Timestamp: 
ResponseHeaderMetadata: 

私が持っているCURLが同様にSSLを有効に:私はそれを試したときにしかし、私は、以下の詳細の例外を取得しています。私は間違って何をしていますか?

+1

サーバーが単に外部ページにアクセスできない場合、同様の問題が発生しました。 cURLが有効になっているのとは別に、cURLが実際に動作することを確認しましたか? – tvkanters

+0

@TVKまあ、私は同じサーバー上でFacebookのAPIを使用することができるので、動作しているはずです。他にどのように働くことを確認できますか? –

+1

私は個人的にこの機能を使いたいと思っています:http://pastebin.com/PwpFFBW7接続をテストするには 'echo curl( 'http://example.com');' と入力してください。 PHPサーバーとAmazonサーバー間の接続に問題があります。 Amazonからサーバーにpingできますか? – tvkanters

答えて

13

この回答は今後の参考用です。詳細なトラブルシューティングについては、質問のコメントを参照してください。

空の応答は、Amazonサーバーへの接続に失敗したことを示します。この場合、HTTPは正常に動作しましたが、HTTPSは正常に動作しませんでした。 cURL設定のCURLOPT_SSL_VERIFYPEERをオフにすると、問題が解決されたため、Amazonサーバーは有効なSSL証明書を使用していないようです。

CURLOPT_SSL_VERIFYPEERを有効にすると、要求されたホストが有効な証明書を持っているかどうかがチェックされ、cURLが返されない場合は、falseが返されます。 CURLOPT_SSL_VERIFYPEERがオフの場合、無効な証明書(例えば、自己署名)が受け入れられ、通常の応答が返されます。

+0

助けてくれてありがとう。ところで、あなたMWSに精通していますか? –

+0

あなたは歓迎されていて、それではうまくいきません。 – tvkanters

+0

これは私を非常に助けました!私はそれをAmazon MWS PHP Feed LibraryのClient.phpのperformRequest()関数に追加し、最終的に応答を得ました!ありがとう! – jmk

1

私はAmazonと非常によく似た接続問題を経験しました。これは、次の設定の配列が含まれているアマゾンのPHPのAPIにバンドルされたサンプルファイルであった:

$config = array (
    'ServiceURL' => $serviceUrl, 
    'ProxyHost' => null, 
    'ProxyPort' => -1, 
    'MaxErrorRetry' => 3, 
); 

、これがコピーさと

'ProxyPort' => -1, 

が変更されていない場合を経由して接続しようとする試みになりますプロキシポート-1はもちろん失敗します(カールエラーをチェックして問題を追跡します)。私はこれが役立つことを願っています

1

今後の参考にしてください。

CURLOPT_SSL_VERIFYPEER => false, 

を設定

private function getDefaultCurlOptions() { 
    return array (
     CURLOPT_POST => true, 
     CURLOPT_USERAGENT => $this->config['UserAgent'], 
     CURLOPT_VERBOSE => true, 
     CURLOPT_HEADERFUNCTION => array ($this, 'headerCallback'), 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_SSL_VERIFYPEER => true, 
     CURLOPT_SSL_VERIFYHOST => 2 
    ); 
    } 

を次のようにSDKの新バージョンではオプションがclient.phpで参照されている私の場合はトリックをしました。私はセキュリティ専門家ではないので、この観点から推薦はありません。少なくとも私はそうしていて、あなたはおそらく1日を失うことはありません。

関連する問題