使用PHP curl获取相同的数据时遇到的问题与在浏览器中使用相同的URL时一样。
这是我的卷曲请求。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic " . $authString));
$data = curl_exec($ch);
由于需要授权,我无法使用file_get_contents。
部分返回的数据是一个应具有此查询字符串的网址:
?q=StatusDate%20%3C%20 ... &fields= ...
解码的是
?q=StatusDate < ... &fields= ...
这就是我使用浏览器时得到的结果。但是当我使用PHP和Curl时,我只能得到这个:
?q=StatusDate&fields= ...
%20%3C%20 ...
缺失。
我猜我需要另一个curlopt设置,但看不到任何明显的东西。返回的数据采用json格式,使用json_decode
就没有区别了。
我已经尝试CURLOPT_BINARYTRANSFER
根据手册我的PHP版本会忽略它,它没有任何区别。
请帮帮我。
我正在使用php 5.6.30
答案 0 :(得分:0)
您需要使用curl请求添加浏览器的用户代理字符串(如果您认为它适用于浏览器)。您可以通过以下任一方式执行此操作:
func_dict[command]()
或者,
def test():
print('Test is successfull')
def help():
pass
func_dict = {'test':test,'help':help} # In this case the 1st is the input, 2nd output
command = input('> ')
func_dict[command]()
可能是拼写错误,我可以在您设置http-header的代码中看到额外的curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12");
。