2013-01-13 12 views
7

Ho scaricato l'SDK di Amazon e sto provando uno degli esempi nella directory degli esempi. Tuttavia, sto diventando un'eccezione con i seguenti dati ogni volta che provo è:Errore interno nelle richieste API di Amazon Marketplace

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

ho avuto CURL abilitato con SSL pure. Che cosa sto facendo di sbagliato?

+1

Ho avuto un problema simile quando il server semplicemente non poteva accedere a pagine esterne. A parte il fatto che cURL sia abilitato, hai confermato che cURL funziona davvero? – tvkanters

+0

@TVK Bene, sono in grado di utilizzare l'API di Facebook sullo stesso server, quindi penso che dovrebbe funzionare. In quale altro modo posso verificare che funzioni? –

+1

Personalmente mi piace usare questa funzione: http://pastebin.com/PwpFFBW7 Per testare la connessione, digitare 'echo curl ('http://example.com');' Se l'API di Facebook funziona, forse è un problema di connessione tra il server PHP e il server Amazon. Puoi eseguire il ping di Amazon dal server? – tvkanters

risposta

13

Questa risposta è per riferimento futuro. Per la risoluzione dei problemi approfondita, vedere i commenti sulla domanda.

La risposta vuota indica una connessione non riuscita al server Amazon. In questo caso, HTTP ha funzionato correttamente, ma HTTPS no. Poiché lo spegnimento dello CURLOPT_SSL_VERIFYPEER nelle impostazioni di CURL ha risolto il problema, sembra che il server Amazon non stia utilizzando un certificato SSL valido.

Avendo CURLOPT_SSL_VERIFYPEER acceso, controlla se l'host richiesto ha un certificato valido e consente a cURL di restituire false in caso contrario. Quando CURLOPT_SSL_VERIFYPEER è disattivato, i certificati non validi (ad es. Autofirmati) sono accettati e restituiscono la risposta regolare.

+0

Grazie per l'aiuto. A proposito, hai familiarità con MWS? –

+0

Prego, e no, non ci ho lavorato. – tvkanters

+0

Questo mi ha aiutato immensamente! L'ho aggiunto alla funzione performRequest() del Client.php della Amazon Feed di PHP MWS e finalmente ho ricevuto una risposta! Grazie! – jmk

1

Ho riscontrato un problema di connessione molto simile con Amazon. Era i file di esempio forniti con lo php api Amazon, che contengono un array seguente configurazione:

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

e se questo viene copiato e non modificato

'ProxyPort' => -1, 

si tradurrà in un tentativo di connessione tramite una porta proxy -1 che ovviamente fallirà (problema tracciato controllando l'errore di arricciatura). Spero che aiuti.

1

Per riferimento futuro. Nella nuova versione del SDK opzioni si fa riferimento nel client.php come segue

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

impostazione

CURLOPT_SSL_VERIFYPEER => false, 

ha fatto il trucco nel mio caso. Poiché non sono un esperto di sicurezza, tuttavia, nessuna raccomandazione da questo punto di vista. Almeno funziona e probabilmente non stai perdendo 1 giorno intero come ho fatto io.

Problemi correlati