2014-10-30 45 views
0

我想解决为什么对Web服务的调用没有返回我需要的结果。PHP CURL从CURL返回不同的结果对于Linux

使用curl设计的Linux

curl -i -H "Accept: application/json" "https://www.thisapi.com/stuff/?status=something" > myfile.txt 

我得到正确的结果,对象首发:{ “OBJECT_COUNT”:4,...

使用与libcurl的PHP和

$curl = curl_init(); 
$hdr[] = 'Content-type: application/json'; 
$hdr[] = 'Accept: application/json'; 

curl_setopt($curl, CURLOPT_HTTPHEADER, $hdr); 

$url = 'https://www.thisapi.com/stuff/?status=something'; 
curl_setopt($curl, CURLOPT_URL, $url); 

//return the data 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

$results = curl_exec($curl); 

忽略URL变量“status”,我得到{“object_count”:8 ...

任何人都可以帮助我弄清楚这两个请求在哪些方面是不相同的,因此为什么他们没有返回相同的结果?

+0

你的“东西”是什么样的?可能它应该被url编码? – Cheery 2014-10-30 18:07:40

+0

@Cheery - 只是文本,没有通常需要url编码的实体。字面上“状态=活动” – Ambulare 2014-10-30 18:09:07

+1

而且,为什么你有'$ hdr [] ='Content-type:application/json';'?你正在向远程服务器发送什么? – Cheery 2014-10-30 18:10:35

回答

0

在第二种情况下,你有一个额外的标题你发送 - Content-type: application/json。也许这会导致API端点以不同的方式响应,而忽略URL中的参数,因为它期望的是JSON格式的内容。