2017-12-12 12 views
0

나는 curl을 사용하여 요청을 받았으며 매개 변수를 전달하는 URL을 호출하려고하는데 제대로 작동하지 않는 것 같습니다. 내가 URL을 기대할PHP cURL - get 요청에 불완전한 URL이 출력 됨

Array 
(
[url] => https://www.website.com/ 
[content_type] => text/html;charset=ISO-8859-1 
[http_code] => 200 
[header_size] => 1088 
[request_size] => 1209 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 1 
[total_time] => 0.706971 
[namelookup_time] => 3.3E-5 
[connect_time] => 3.4E-5 
[pretransfer_time] => 9.6E-5 
[size_upload] => 0 
[size_download] => 53855 
[speed_download] => 76177 
[speed_upload] => 0 
[download_content_length] => -1 
[upload_content_length] => -1 
[starttransfer_time] => 0.201504 
[redirect_time] => 0.447898 
[redirect_url] => 
[primary_ip] => 193.42.160.33 
[certinfo] => Array 
    (
    ) 

[primary_port] => 443 
[local_ip] => 192.168.1.51 
[local_port] => 61262 
[request_header] => GET/HTTP/1.1 
) 

: 나는이 상황을 얻을 컬의 요청 및 응답 헤더를 인쇄 할 때 이제

$curl = curl_init(); 
$params = array('code'=> '123123'); 
$query = http_build_query($params); 
try{ 
    curl_setopt($curl, CURLOPT_URL, 'https://www.website.com/foo/addProduct?'.$query); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HEADER, 1); 
    curl_setopt($curl, CURLINFO_HEADER_OUT, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET"); 
    $resp = curl_exec($curl); 

    //DEBUG INFO 
    $information = curl_getinfo($curl); 
} catch (Exception $e) { 
    echo $e; 
} 

: 이것은 내 컬 요청의 PHP 코드 be

https://www.website.com/foo/addProduct?code=123123 

맞습니까?

+1

이 페이지에서 getinfo에 대한 첫 번째 옵션을 추가하십시오. http://php.net/manual/en/function.curl-getinfo.php 필자는 단 하나의 응답 만 제공 할 것이지만 동일한 URL을 제공한다고 생각합니다. – Christian

+1

'배열을 얻습니다. ( [url] => https://www.website.com/foo/addProduct?code=123123 [content_type] => text/html [http_code] => 404 ...' 하지만 $ headers에 무엇이 있는지 모르며 실제 URL이없는 것 같습니다. –

+2

이 코드를 붙여 넣었습니다 ('$ headers'를'[] '로 대체했습니다). 그것은 나를 위해 잘 작동합니다. – apokryfos

답변

0

코드가 [url] => https://www.website.com/ 인 유일한 방법은 컬이 Location-redirected 인 경우입니다 (CURLOPT_FOLLOWLOCATION을 사용했기 때문에).

(https://bugs.php.net/bug.php?id=65348으로) curl_setopt ($curl, CURLINFO_HEADER_OUT, true);을 제거하고 curl_setopt_array ($curl, [CURLOPT_VERBOSE => true,CURLOPT_STDERR => STDOUT]);을 작성하면 직접 볼 수 있습니다.