2013-01-13 58 views
7

我已經下載了亞馬遜的Marketplace SDK,並且正在試用示例目錄中的一個示例。但是,每次嘗試時我都會收到以下詳細信息的例外情況:亞馬遜商城API請求獲取內部錯誤

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

我已經通過SSL啓用了CURL。我究竟做錯了什麼?

+1

當服務器無法訪問外部頁面時,我遇到了類似的問題。除了cURL被啓用之外,你是否確認cURL實際上有效? – tvkanters

+0

@TVK嗯,我可以在同一臺服務器上使用Facebook的API,所以我認爲它應該可以工作。我還能如何驗證它的工作? –

+1

我個人喜歡使用此功能:http://pastebin.com/PwpFFBW7要測試連接,請輸入'echo curl('http://example.com');' 如果Facebook的API正在工作,那麼也許它是一個PHP服務器和Amazon服務器之間的連接問題。你能從服務器ping亞馬遜嗎? – tvkanters

回答

13

此答案僅供將來參考。有關深入的故障排除,請參閱有關問題的評論。

空的響應表示到亞馬遜服務器的連接失敗。在這種情況下,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

我遇到了與亞馬遜非常類似的連接問題。這是與亞馬遜PHP API捆綁在一起的示例文件,它含有下列配置數組:

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

並且如果該被複制,而不是改性

'ProxyPort' => -1, 

將導致嘗試連接通過一個代理端口-1,當然會失敗(通過檢查curl錯誤來跟蹤問題)。我希望這有幫助。

1

供將來參考。在SDK的新版本的選項在client.php如下

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 
    ); 
    } 

設置

CURLOPT_SSL_VERIFYPEER => false, 

確實在我的情況的伎倆引用。然而,由於我不是安全專家,從這個角度來看沒有任何建議。至少它的工作,你可能不像我一樣整整丟一天。