2016-04-29 5 views
5

का उपयोग करते समय GuzzleHttp हैंग्स यहां एक साधारण कोड स्निपलेट है लेकिन यह सिर्फ लटकता है और उत्तरदायी नहीं है।स्थानीयहोस्ट

$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(); 

किसी भी पॉइंटर्स की बहुत सराहना की गई। जब मैंने अपने उपयोगकर्ता नाम और पासवर्ड का उपयोग करते हुए जिथब एपीआई के साथ ऊपर की कोशिश की, तो मुझे 200 प्रतिक्रिया और बहुत सारी जानकारी मिलती है।

+0

क्या होता है जब आप अपने ब्राउज़र में 'http: // localhost: 8000/BlogApiV1/BlogApi/ब्लॉग /' का प्रयास करते हैं? –

+0

@teko ब्राउज़र कुछ लोड करने का प्रयास करता रहता है लेकिन कभी नहीं करता है। – user3264461

+0

तो समस्या ऊपर http: // localhost: 8000/BlogApiV1/BlogApi/blogs' पर स्थित स्क्रिप्ट के साथ है, ऊपर स्निपेट नहीं है। –

उत्तर

1

मुझे एक ही समस्या थी। मैं नीचे base_uri परिभाषित करके इसे चारों ओर मिला।

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

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

यदि http://localhost:8000/BlogApiV1/BlogApi/blogs पर लिपि अच्छी तरह से काम करती है, तो मेरी शर्त है कि X-API-KEY भेजा नहीं जा रहा है।

यदि आप दस्तावेज़ (http://docs.guzzlephp.org/en/latest/request-options.html#headers) देखते हैं तो ऐसा लगता है कि आपने विकल्प सरणी को खराब किया है।

यह

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

ऊपर की कोशिश की लेकिन एक ही बात। ब्राउज़र लोड करने की कोशिश करता रहता है। अपाचे अप्रतिबंधित हो जाता है। – user3264461

+0

तो, मेरे कोड को वेबसर्वर पर एक एफक्यूडी में ले जाया गया और कोई समस्या नहीं! अपेक्षित के रूप में जेसन जवाब प्राप्त किया। इसलिए, मेरे मैक ओएसएक्स पर 8000 के स्थानीयहोस्ट के साथ कुछ करना है। कोई विचार? – user3264461

+0

क्या स्थानीयहोस्ट पर गोजल के लिए कोई ज्ञात बग है? वास्तव में वही स्क्रिप्ट मेरे वेबसर्वर पर और fqd पर काम करती है। – user3264461

3

अंत में इसका समाधान नहीं किया जाना चाहिए। यदि आप गैर-मानक बंदरगाहों से चल रहे हैं तो Guzzle (या विशिष्ट होने के लिए कर्ल) अनुरोधों को अस्वीकार कर रहा है।

इसके अलावा, यह यादृच्छिक प्रतीत होता है, कभी-कभी यह काम करता है, कभी-कभी ऐसा नहीं होता है। मैं बंदरगाह 80 में चला गया और वोला सब कुछ काम किया।

+0

उपरोक्त साझा करने के लिए धन्यवाद। मैं समझ नहीं पाया कि समस्या क्या थी। मैंने अपनी पूरी साइट को अपने लैपटॉप से ​​वेब सेवा प्रदाता में ले जाया। यह वहां काम करता है लेकिन निश्चित रूप से मुझे एहसास है कि ऐसा इसलिए है क्योंकि जाहिर है कि वे पोर्ट 80 का उपयोग करते हैं। स्थानीय रूप से, मैं पोर्ट 8000 का उपयोग कर रहा था। धन्यवाद! – user3264461

+0

लार्वेल डेवलपर्स के लिए: मैंने [Laravel Valet] (https://laravel.com/docs/master/valet) का उपयोग करके इस समस्या को हल किया। ऐसा लगता है कि Guzzle स्थानीयहोस्ट पसंद नहीं है। – louisfischer