2016-04-29 18 views
5

Ecco un semplice snipplet codice, ma questo solo si blocca e non risponde.GuzzleHttp si blocca quando si utilizza il computer host locale

$httpClient = new GuzzleHttp\Client(); // version 6.x 

    $headers = ['X-API-KEY' => '123456']; 

    $request = $httpClient->request('GET', 'http://localhost:8000/BlogApiV1/BlogApi/blogs/', $headers); 
    $response = $client->send($request, ['timeout' => 2]); 

    echo $request->getStatusCode(); 
    echo $request->getHeader('content-type'); 
    echo $request->getBody(); 
    die(); 

Qualsiasi suggerimento molto apprezzato. Quando ho provato sopra con github api usando il mio username e password, ottengo una risposta di 200 e molte informazioni.

+0

Cosa succede quando provi 'http: // localhost: 8000/BlogApiV1/BlogApi/blogs /' nel tuo browser? –

+0

@teko il browser continua a provare a caricare qualcosa, ma non lo fa mai. – user3264461

+0

Quindi il problema è con lo script situato a 'http: // localhost: 8000/BlogApiV1/BlogApi/non blogs' frammento di sopra. –

risposta

1

ho avuto lo stesso problema. Ho risolto il problema definendo base_uri come di seguito.

$client = new \GuzzleHttp\Client([ 
    'base_uri' => 'http://localhost:8000', 
    'defaults' => [ 
     'exceptions' => false 
    ] 
]); 

$response = $client->get('/api/user/1'); 
0

Se la sceneggiatura di http://localhost:8000/BlogApiV1/BlogApi/blogs funziona correttamente, la mia scommessa è che il X-API-KEY non viene inviato.

Se si guarda la documentazione (http://docs.guzzlephp.org/en/latest/request-options.html#headers) Sembra che l'array malformati opzioni.

Dovrebbe essere

$headers = ['headers' => ['X-API-KEY' => '123456']]; 
+0

Provato sopra ma stessa cosa. Il browser continua a provare a caricare. Apache non risponde. – user3264461

+0

Quindi, ho spostato il mio codice su un FQD su un server web e senza problemi! Ha ricevuto la risposta JSON come previsto. Pertanto, ha qualcosa a che fare con localhost di: 8000 sul mio Mac OSX. Qualche idea? – user3264461

+0

Esiste un bug noto per guzzle su localhost? Esattamente lo stesso script funziona sul mio webserver sotto e su fqd. – user3264461

3

finalmente risolto esso. Guzzle (o CURL per essere specifico) sta negando le richieste se stai eseguendo da porte non standard.

Inoltre, questo sembra essere casuale, a volte funziona, a volte non è così. Mi sono trasferito al porto 80 e Voila ha funzionato tutto.

+0

Grazie per aver condiviso sopra. Non riuscivo a capire quale fosse il problema. Ho spostato l'intero sito dal mio portatile a un provider di servizi web. Funziona lì, ma ovviamente ora capisco che è perché ovviamente usano la porta 80. A livello locale, stavo usando la porta 8000. Grazie ancora! – user3264461

+0

Per gli sviluppatori Laravel: ho risolto questo problema utilizzando [Laravel Valet] (https://laravel.com/docs/master/valet). sembra che a Guzzle non piaccia localhost. – louisfischer

Problemi correlati