คำถามติดแท็ก guzzle

13
ฉันจะใช้ Guzzle เพื่อส่งคำขอ POST ใน JSON ได้อย่างไร
มีใครรู้วิธีที่ถูกต้องในการpostใช้ JSON Guzzleหรือไม่ $request = $this->client->post(self::URL_REGISTER,array( 'content-type' => 'application/json' ),array(json_encode($_POST))); ฉันได้รับการinternal server errorตอบกลับจากเซิร์ฟเวอร์ มันทำงานใช้ PostmanChrome
180 php  postman  guzzle 

6
Guzzle 6: ไม่มีวิธี json () อีกต่อไปสำหรับการตอบกลับ
ก่อนหน้านี้ใน Guzzle 5.3: $response = $client->get('http://httpbin.org/get'); $array = $response->json(); // Yoohoo var_dump($array[0]['origin']); ฉันสามารถรับชุด PHP จากการตอบสนอง JSON ได้อย่างง่ายดาย ตอนนี้ใน Guzzle 6 ฉันไม่รู้จะทำอย่างไร ดูเหมือนว่าจะไม่มีjson()วิธีการอีกต่อไป ฉัน (อย่างรวดเร็ว) อ่านเอกสารจากเวอร์ชันล่าสุดและไม่พบสิ่งใดเกี่ยวกับการตอบสนองของ JSON ฉันคิดว่าฉันพลาดบางสิ่งบางอย่างอาจมีแนวคิดใหม่ที่ฉันไม่เข้าใจ (หรือบางทีฉันอ่านไม่ถูกต้อง) นี่เป็นวิธีใหม่ในแบบเดียวหรือไม่? $response = $client->get('http://httpbin.org/get'); $array = json_decode($response->getBody()->getContents(), true); // :'( var_dump($array[0]['origin']); หรือมีผู้ช่วยหรืออะไรแบบนั้น?
172 php  guzzle 

2
Guzzlehttp - ร่างกายได้รับคำตอบจาก Guzzle 6 อย่างไร
ฉันพยายามที่จะเขียนเสื้อคลุมรอบ api บริษัท ของฉันกำลังพัฒนา มันเป็นความสงบและการใช้บุรุษไปรษณีย์ฉันสามารถส่งคำขอโพสต์ไปยังจุดสิ้นสุดเช่นhttp://subdomain.dev.myapi.com/api/v1/auth/ชื่อผู้ใช้และรหัสผ่านเป็นข้อมูล POST และฉันได้รับโทเค็นกลับมา ทำงานได้ตามที่คาดไว้ ตอนนี้เมื่อฉันลองและทำสิ่งเดียวกันจาก PHP ฉันจะเอาGuzzleHttp\Psr7\Responseวัตถุกลับคืนแต่ดูเหมือนจะไม่พบโทเค็นที่ใด ๆ ข้างในนั้นเหมือนที่ฉันทำกับคำขอบุรุษไปรษณีย์ รหัสที่เกี่ยวข้องดูเหมือนว่า: $client = new Client(['base_uri' => 'http://companysub.dev.myapi.com/']); $response = $client->post('api/v1/auth/', [ 'form_params' => [ 'username' => $user, 'password' => $password ] ]); var_dump($response); //or $resonse->getBody(), etc... ผลลัพธ์ของโค้ดด้านบนมีลักษณะดังนี้ (คำเตือนกำแพงข้อความเข้า): object(guzzlehttp\psr7\response)#36 (6) { ["reasonphrase":"guzzlehttp\psr7\response":private]=> string(2) "ok" ["statuscode":"guzzlehttp\psr7\response":private]=> int(200) ["headers":"guzzlehttp\psr7\response":private]=> …
163 php  response  guzzle  guzzle6 

5
จัดการข้อยกเว้น Guzzle และรับเนื้อหา HTTP
ฉันต้องการจัดการข้อผิดพลาดจาก Guzzle เมื่อเซิร์ฟเวอร์ส่งคืนรหัสสถานะ 4xx และ 5xx ฉันขอแบบนี้: $client = $this->getGuzzleClient(); $request = $client->post($url, $headers, $value); try { $response = $request->send(); return $response->getBody(); } catch (\Exception $e) { // How can I get the response body? } $e->getMessageส่งคืนข้อมูลรหัส แต่ไม่ใช่เนื้อหาของการตอบสนอง HTTP ฉันจะได้รับร่างกายตอบสนองได้อย่างไร?
122 php  guzzle 

4
PHP GuzzleHttp. จะขอโพสต์ด้วย params ได้อย่างไร?
วิธีสร้างคำขอโพสต์ด้วย GuzzleHttp (เวอร์ชัน 5.0) ฉันกำลังพยายามทำสิ่งต่อไปนี้: $client = new \GuzzleHttp\Client(); $client->post( 'http://www.example.com/user/create', array( 'email' => 'test@gmail.com', 'name' => 'Test user', 'password' => 'testpassword' ) ); แต่ฉันได้รับข้อผิดพลาด: ข้อผิดพลาดร้ายแรงของ PHP: ข้อยกเว้นที่ไม่ถูกจับ 'InvalidArgumentException' พร้อมข้อความ 'ไม่มีวิธีใดที่สามารถจัดการกับคีย์การกำหนดค่าอีเมลได้'

5
Guzzle การขว้างปา RejectionException แทน ConnectionException บนกระบวนการพื้นหลัง
ฉันมีงานที่ทำงานหลายคนที่มีการร้องขอ HTTP โดยใช้ Guzzle อย่างไรก็ตามบล็อก try-catch ภายในงานนี้ดูเหมือนจะไม่ได้รับGuzzleHttp\Exception\RequestExceptionเมื่อฉันกำลังเรียกใช้งานเหล่านี้ในกระบวนการพื้นหลัง กระบวนการกำลังทำงานอยู่php artisan queue:workซึ่งเป็นผู้ปฏิบัติงานระบบคิว Laravel ที่ตรวจสอบคิวและหยิบงาน แต่ข้อยกเว้นที่ถูกโยนเป็นหนึ่งGuzzleHttp\Promise\RejectionExceptionในข้อความ: คำสัญญาถูกปฏิเสธด้วยเหตุผล: ข้อผิดพลาด cURL 28: หมดเวลาการทำงานหลังจาก 30001 มิลลิวินาทีพร้อมรับ 0 ไบต์ (ดู https://curl.haxx.se/libcurl/c/libcurl-errors.html ) นี่คือการปลอมตัวGuzzleHttp\Exception\ConnectException(ดูhttps://github.com/guzzle/promises/blob/master/src/RejectionException.php#L22 ) เพราะถ้าฉันทำงานที่คล้ายกันในกระบวนการ PHP ปกติที่เรียกใช้โดยไปที่ URL ฉันได้รับข้อความConnectExceptionตามที่ตั้งใจไว้: ข้อผิดพลาด cURL 28: การดำเนินการหมดเวลาหลังจาก 100 มิลลิวินาทีโดยได้รับ 0 จาก 0 ไบต์ (ดูที่ https://curl.haxx.se/libcurl/c/libcurl-errors.html ) โค้ดตัวอย่างที่จะทำให้หมดเวลานี้: try { $c = …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.