Как получить простую копию моего HTTP-запроса

Я пытаюсь общаться с anREST API, используя cURL и PHP. Но я получаю проблему от API, и мне нужно иметь возможность видеть мой HTTP-запрос в виде обычного текста, где я могу проанализировать и исправить его.

Я попробовал следующее, чтобы написать свой запрос в файл

        $file = fopen('request.txt', 'w');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, $file);

Но это не показывает мне данные JSON.

Вот что я получаю в файле request.txt

* Hostname servername was found in DNS cache
*   Trying INTERNAL IP...
* Connected to servername (INTERNAL IP) port 8018 (#0)
> PUT /icws/1163386002/messaging/subscriptions/queues/blahblah HTTP/1.1
Host: servername:8018
Accept: */*
ININ-ICWS-CSRF-Token: WAhtYWxoYXlla1dBY2GHSDMNDFtjMDcwZmIyYy1mguc4LTQ3YjEtODgzMy1iOTBkM2ZhYWHfoyNmYTlYCjEwLjAuNC4xNjA=
ININ-ICWS-Session-ID: 1163386002
Cookie: icws_1163386002=232sggsdfgdabe-404c-8d8c-12345dfgdfg
Content-Length: 156
Content-Type: application/x-www-form-urlencoded

* upload completely sent off: 156 out of 156 bytes
< HTTP/1.1 500 Internal Server Error
< Cache-Control: no-cache, no-store, must-revalidate
< Pragma: no-cache
< Expires: 0
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
< Content-Type: application/vnd.inin.icws+JSON; charset=utf-8
< Date: Tue, 12 May 2015 17:52:52 GMT
< Server: HttpPluginHost
< Content-Length: 90
<
* Connection #0 to host servername left intact

Я хотел бы видеть строку JSON в виде простого текста.

Вот как я делаю мой вызов cURL с использованием PHP

private function _processRequest($method, $uri, $data = false, $header = NULL, &$httpRespond = array(), &$httpCode = NULL)
{
$ch = curl_init();
$url = $this->_baseURL . $uri;

if(
($method == 'POST' || $method == 'PUT')
&& $data
){
$jsonString = json_encode( $data );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $jsonString );
}

if($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, true);
} elseif( $method == 'PUT'){
//curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
} else {
if ($data){
$url = sprintf("%s?%s", $url, http_build_query($data));
}
}

//disable the use of cached connection
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);

//return the respond from the API
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//return the HEADER respond from the API
curl_setopt($ch, CURLOPT_HEADER, true);

//add custom headers
if(!empty($header)){
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}

//enable SSL
if( $this->_protocol == 'https' ){
curl_setopt($ch, CURLOPT_CAINFO, $this->_cainfo);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);
}

//set the URL
curl_setopt($ch, CURLOPT_URL, $url);

$file = fopen('request.txt', 'w');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, $file);


$respond = curl_exec($ch);

//throw cURL exception
if($respond === false){
$errorNo = curl_errno($ch);
$errorMessage = curl_error($ch);

throw new ApiException($errorMessage, $errorNo);
}

list($header, $body) = explode("\r\n\r\n", $respond, 2);

$httpRespond = $this->_http_parse_headers($header);


$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

$result = json_decode($body, true);

return $result;
}

Как мне увидеть весь HTTP-запрос в виде обычного текста?

0

Решение

Вы можете использовать Fiddler (http://www.telerik.com/fiddler) чтобы увидеть ваш полный запрос / ответ в виде обычного текста, а также проверить ваш REST API.

Также вы можете использовать Wireshark (https://www.wireshark.org/) применение фильтра HTTP.

Я рекомендую Fiddler, я часто использую его для тестирования и отладки моего REST API.

Надеюсь это поможет

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]