CURL GET请求中未收到标头

时间:2018-01-23 08:30:37

标签: php curl

我正在尝试以下方法:

$get_string = '?latitude='.$lat.'&longitude='.$lng.'&type='.$tsp;

$headers = array();
//$headers[] = "x-auth-token: myToken";
$headers['x-auth-token'] = "myToken";
$state_ch = curl_init();
curl_setopt($state_ch, CURLOPT_URL,'myUrl'.$get_string);

curl_setopt($state_ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($state_ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($state_ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($state_ch, CURLOPT_POSTFIELDS, $get_string);
$state_result = curl_exec($state_ch);
//$state_result = json_decode($state_result);

echo "<pre>"; print_r($state_result);

但我明白了:

<pre>{"data":{"status":"failed","message":"Token is required"}}

我想念的是什么人?

2 个答案:

答案 0 :(得分:1)

希望以下内容可以帮助您确定您的请求发生了什么 - 使用显示的输出来帮助调试请求,更改相关 配置中的参数。一件事 - 是端点https还是常规http

/* config */
$url='http://www.example.com';
$token='banana';

$params=array(
    'latitude'  =>  $lat,
    'longitude' =>  $lng,
    'type'      =>  $tsp
);
$headers = array(
    sprintf('X-AUTH-TOKEN: %s', $token )
);




/* prepare url */
$url=sprintf( '%s?%s', $url, http_build_query( $params ) );
/* stream for advanced debug info */
$vbh = fopen('php://temp', 'w+');


$curl = curl_init( $url );
curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
/* enhanced debug info */
curl_setopt( $curl,CURLOPT_VERBOSE,true );
curl_setopt( $curl,CURLOPT_NOPROGRESS,true );
curl_setopt( $curl,CURLOPT_STDERR,$vbh );

/* results */
$res=(object)array(
    'response'  =>  curl_exec( $curl ),
    'info'      =>  (object)curl_getinfo( $curl ),
    'errors'    =>  curl_error( $curl )
);
rewind( $vbh );
$res->verbose=stream_get_contents( $vbh );
fclose( $vbh );
curl_close( $curl );



printf( '<pre>%s</pre>', print_r( $res->verbose, true ) );
printf( '<pre>%s</pre>', print_r( $res->info, true ) );

答案 1 :(得分:0)

curl_setopt期望headers数组每个标头有一个条目,例如

$headers = array(
    'X-Auth-Token: myToken'
);

由于您正在为标题使用关联数组,因此可能只有字符串&#34; myToken&#34;正在发送。

文档:http://www.php.net/manual/en/function.curl-setopt.php