2012-08-02 2 views
0

페이지 (server.php)를 말리고 헤더 ($ webServiceId $ hash 및 $ timestamp)에 세 개의 변수를 보내려고합니다. server.php의 헤더에서 두 변수를 가져 와서 어떻게 처리하고 응답을 보낼 수 있습니까? 나는 여기에서 검색하고 검색하는 것을 시도했다. 그러나 나는 방법을 발견하는 것처럼 보이지 않는다.페이지를 cURLing 할 때 헤더를 가져 오는 방법

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_URL, 'server.php'); 
curl_setopt($ch, CURLOPT_HTTPGET, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: URL-Encoded-API-Key {$webServiceId},{$hash},{$timestamp}")); 
$response = curl_exec($ch); 
curl_close ($ch); 
// dump response 
print_r($response); 

server.php 에코의 응답을 다시 받았다 헤더는 $ 응답 수익률의 print_r의 경우 :

HTTP/1.1 200 OK Date: Thu, 02 Aug 2012 22:18:59 GMT Server: LiteSpeed Connection: close X-Powered-By: PHP/5.3.14 Allow: GET 

권한 부여 : 거기에 URL 인코딩 된-API-키 일 아닌가요 . 컬 머리글을 잘못 설정했을 수 있습니까?

답변

0

함수 getallheaders()은 전체 요청 헤더를 반환합니다. server.php에서 전화하면 cURL과 함께 보낸 맞춤 헤더를 수신 할 수 있습니다. 그런데

http://php.net/manual/en/function.getallheaders.php

편집

, 당신은 server.php 따옴표가 필요합니다

curl_setopt($ch, CURLOPT_URL, 'server.php'); 

편집 2

나는이 스크립트를 사용하여 테스트 :

client.php

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1/server.php'); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: URL-Encoded-API-Key 12,12113132,1330032113")); 
$response = curl_exec($ch); 
curl_close ($ch); 

// dump response 
var_dump($response); 

server.php

var_dump(getallheaders()); 

나는 다음과 같은 응답을받을 client.php 전화 :

array(3) { 
    ["Host"]=> 
    string(9) "127.0.0.1" 
    ["Accept"]=> 
    string(3) "*/*" 
    ["Authorization"]=> 
    string(42) "URL-Encoded-API-Key 12,12113132,1330032113" 
} 

내 생각 엔 사용자 정의 헤더입니다 형식이 잘못되었습니다. 간단한 헤더를 사용하여 시도하고 그것이 작동하는지 확인 : 나는 getallheaders() 사용한 적이

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: 123456")); 
+0

나는 그것을 사용하여 시도하지만, 내가 무엇을 찾고 제외한 모든 반환합니다. 위의 컬을 잘못 설정하고 있습니까?(나는 server.php가 응답으로 getallheaders() 함수를 반향시키기 때문에 반환되는 것을 알고있다.) – Derek

+0

@Derek 필자는 나의 결과를 내 대답으로 업데이트했다. 내 제안을 시도해보십시오. – Tchoupi

0

하지만 문서는 당신이 무엇을하고 있는지없는 현재 요청에 대한 헤더를 읽어 말한다.

대답

은 여기에 있습니다 : 당신이 문자열로 모든 헤더를 취득 후, 다음, 그것을 폭발 단지 값을 얻을 수 strstr() 또는 정규식 각각 통과 Can PHP cURL retrieve response headers AND body in a single request?

.

+0

사실 현재 요청에 대한 헤더를 가져 오려고합니다. 컬 (curl)을 통해 나는 PHP 페이지에 추가 커스텀 헤더를 보내려고 노력 중입니다. 나는 cURLing하고 있으며, 그 페이지는 헤더를 검색하고 처리해야합니다. – Derek

+0

이제 귀하의 질문에 올바르게 표시되지 않는 것 같습니다. "curl a page"라고 말하면 컬을 사용하여 요청하고 다운로드한다고 가정합니다. 그럼 돌려 보내라? –

+0

@MichaelOzeryansky 내가 틀릴 수도 있지만, 데릭이 요청의 양쪽 끝을 처리해야한다는 것을 이해했습니다. 제공된 스크립트는'server.php'에 여분의 헤더가있는 요청을 보내는 데 사용됩니다. 그리고 그는'getallheaders()'가 도움이되는'server.php'에서 헤더를 가져와야합니다. – Tchoupi

0

잘못하고 있습니다. "CURLOPT_HEADER"는 출력에 요청 및 응답 헤더를 표시하는 bool입니다. "CURLOPT_HTTPHEADER"를 사용해야합니다.이 헤더는 헤더 배열을 필요로하며 요청과 함께 헤더를 전달하는 데 사용됩니다.

봐은 : http://www.php.net/manual/en/function.curl-setopt.php

관련 문제