У меня есть неплохой API. когда я бегу Почтальон по следующему URL-адресу, я получаю в ответ следующим образом:Guzzle 6.x/Не получил ожидаемый результат
POSTMAN RUN URL
DELETE
https://www.example.com/api/v1/Blog/blog/13
{
"status":"Failure",
"message":"The specified blog post could not be found"
}
Вышесказанное, конечно, как ожидается, однако, я не могу читать в «статус» и «сообщение». Как мне получить ответ? Вот мой настоящий код:
$entry_id = $this->uri->segment(3);
$theUrl = $this->config->item('base_url').'api/v1/Blog/blog/'.$entry_id;
// tested $theUrl and works
$client = new GuzzleHttp\Client([
'base_uri' => $theUrl,
'timeout' => 3.0,
'http_errors' => FALSE
]);
$response = $client->delete($theUrl);
$code = $response->getStatusCode();
$response = $client->delete($theUrl);
$x = $response->getBody();
echo "<pre>";
echo var_dump($x); // cannot see message or status anywhere.
echo "</pre>";
Ваши предложения очень ценятся.
+++ я сейчас попробовал этот пересмотренный код, но до сих пор не может видеть состояние или дату сообщение в ответе:
$entry_id = $this->uri->segment(3);
$theUrl = $this->config->item('base_url').'api/v1/Blog/blog/'.$entry_id;
$client = new GuzzleHttp\Client([
'timeout' => 3.0,
'http_errors' => FALSE
]);
$response = $client->delete($theUrl, ['debug' => true]);
$code = $response->getStatusCode();
$x = $response->getBody();
echo "<pre>";
echo var_dump($x);
echo "</pre>";
die();
Вот дамп и отладочная информация:
https://www.example.com/api/v1/Blog/blog/6
* Hostname was found in DNS cache * Trying 104.131.132.25... * Connected to
www.example.com (104.131.132.25) port 443 (#1) * successfully set
certificate verify locations: * CAfile: none CApath: /etc/ssl/certs * SSL
connection using XXXXXXXXXXXXXXXXXXXXXXXXX* Server certificate: *
subject: CN=www.example.com * start date: 2016-10-29 05:15:00 GMT * expire
date: 2017-01-27 05:15:00 GMT * subjectAltName: www.movinghaus.com matched
* issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3 * SSL
certificate verify ok. > DELETE /api/v1/Blog/blog/6 HTTP/1.1 User-Agent:
GuzzleHttp/6.2.0 curl/7.35.0 PHP/5.5.9-1ubuntu4.11 Host: www.example.com <
HTTP/1.1 200 OK < Date: Fri, 04 Nov 2016 03:55:21 GMT * Server Apache/2.4.7
(Ubuntu) is not blacklisted < Server: Apache/2.4.7 (Ubuntu) < X-Powered-By:
PHP/5.5.9-1ubuntu4.11 < Set-Cookie:
PHPSESSID=XXXXXXXXXXXXXXXXXX; expires=Fri, 04-Nov-2016 05:55:21 GMT; Max-
Age=7200; path=/; HttpOnly < Expires: Thu, 19 Nov 1981 08:52:00 GMT <
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
check=0 < Pragma: no-cache < Content-Length: 40 < Content-Type:
application/json; charset=utf-8 < * Connection #1 to host www.example.com
left intact
object(GuzzleHttp\Psr7\Stream)#65 (7) {
["stream":"GuzzleHttp\Psr7\Stream":private]=>
resource(50) of type (stream)
["size":"GuzzleHttp\Psr7\Stream":private]=>
NULL
["seekable":"GuzzleHttp\Psr7\Stream":private]=>
bool(true)
["readable":"GuzzleHttp\Psr7\Stream":private]=>
bool(true)
["writable":"GuzzleHttp\Psr7\Stream":private]=>
bool(true)
["uri":"GuzzleHttp\Psr7\Stream":private]=>
string(10) "php://temp"
["customMetadata":"GuzzleHttp\Psr7\Stream":private]=>
array(0) {
}
}
Try '$ response-> JSON();' – BVengerov
Спасибо. Пробовал $ x = $ response-> json(); но получите следующую ошибку: Звонок на неопределенный метод GuzzleHttp \ Psr7 \ Response :: json() – user3264461
, когда я делаю $ repsonse-> getBody(); Я получаю: object (GuzzleHttp \ Psr7 \ Stream) # 65 (7) { ["stream": "GuzzleHttp \ Psr7 \ Stream": private] => ресурс (49) типа (потока) ["размер" : «GuzzleHttp \ Psr7 \ Stream»: private] => NULL ["seekable": "GuzzleHttp \ Psr7 \ Stream": private] => bool (true) ["readable": "GuzzleHttp \ Psr7 \ Stream ": private] => bool (true) [" writeable ":" GuzzleHttp \ Psr7 \ Stream ": private] => bool (true) [" uri ":" GuzzleHttp \ Psr7 \ Stream ": private] => строка (10) "php: // temp" ["customMetadata": "GuzzleHttp \ Psr7 \ Stream": private] => array (0) { } } no СТАТУС или СООБЩЕНИЕ – user3264461