Я пытаюсь связаться с API, используя cURL. Одним из методов требуют , чтобы я передать значение ININ-ICWS-CSRF-Token
заголовка (то есть. WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zNmZjN2MxYWJmODBYCjEwLjAuNC4xNjA=
) и Set-Cookie
(то есть. icws_904586002=bf7c7783-6766-4c4f-862b-48f25a9a3741
) , поэтому мне нужно извлеките их, чтобы я мог передать их позже в моем коде.
Вот что я сделал, чтобы извлечь заголовок и тело из ответа cURL / API:
$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); echo '<pre>'; print_r($header); echo '</pre>';
Это содержимое значения $header
:
HTTP/1.1 201 Created ININ-ICWS-CSRF-Token: WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zNmZjN2MxYWJmODBYCjEwLjAuNC4xNjA= ININ-ICWS-Session-ID: 904586002 Set-Cookie: icws_904586002=bf7c7783-6766-4c4f-862b-48f25a9a3741; Path=/icws/904586002 Location: /icws/904586002/connection 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: Wed, 06 May 2015 17:13:44 GMT Server: HttpPluginHost Content-Length: 237
Я хотел бы получить в результате результаты, подобные этому
the value of "ININ-ICWS-CSRF-Token" is "WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zNmZjN2MxYWJmODBYCjEwLjAuNC4xNjA=" the value of the "cookie" is "ININ-ICWS-CSRF-Token: WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zNmZjN2MxYWJmODBYCjEwLjAuNC4xNjA="
Вы можете использовать функцию http_parse_headers
для анализа заголовков.
$hdr_array = http_parse_headers($header); foreach ($hdr_array as $name => $value) { echo "The value of '$name' is '$value'<br>"; }
Если у вас нет http_parse_headers
, вы можете использовать код в ответе Педро Лобито.
<?php $myHeader = <<< LOL HTTP/1.1 201 Created ININ-ICWS-CSRF-Token: WAhtYWxoYXlla1dBY2NvUkRJWCQxZmUxZWFhZS0xZTE0LTQyNGYtYjdhZS0zNmZjN2MxYWJmODBYCjEwLjAuNC4xNjA= ININ-ICWS-Session-ID: 904586002 Set-Cookie: icws_904586002=bf7c7783-6766-4c4f-862b-48f25a9a3741; Path=/icws/904586002 Location: /icws/904586002/connection 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: Wed, 06 May 2015 17:13:44 GMT Server: HttpPluginHost Content-Length: 237 LOL; preg_match_all('/(.*?Token): (.*?)\s+/', $myHeader, $matches, PREG_PATTERN_ORDER); $tokenName = $matches[1][0]; $token = $matches[2][0]; echo <<< LOL the value of "$tokenName" is "$token" the value of the "cookie" is "$tokenName: $token" LOL; ?>