对于网址“ http://hq.sinajs.cn/list=sh600123 ”
我可以通过任何浏览器得到响应,结果如下,
var hq_str_sh600123="兰花科创,13.53,13.63,13.45,13.61,13.43,13.45,13.46,1113110,15047856,3200,13.45,1500,13.44,11590,13.43,369,00,13.4,6,80,00,13.4,6,86. 6400,13.47,26496,13.48,14453,13.49,3400,13.50,2013-08-30,09:44:08,00";
我也可以从 linux curl 命令得到相同的响应
curl http://hq.sinajs.cn/list=sh600123 var hq_str_sh600123="兰花科创,13.53,13.63,13.44,13.61,13.43,13.43,13.44,1144910,15475169,39090,13.43,37100,13.42,91 13.41,235500,13.40,5800,13.39,800,13.44,41300,13.45,9800,13.46,6400,13.47,25496,13.48,2013-08-30,09:44:43,00";
但最大的问题是我无法从 PHP cURL 函数中得到正确的响应
我的主干代码是这样的,已经删除了业务逻辑
$url = "http://hq.sinajs.cn/";//the url
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // the result could be got by the return value
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Expect:' )); // this line is added according to the advice from the internet
curl_setopt($ch, CURLOPT_URL,$url);
$post_data = "list=".urldecode($code); // here the code can be "sh600485"
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);
$result 是假的,我添加了这样的详细代码:
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_STDERR, $verbose = fopen('php://temp', 'rw+'));
echo "Verbose information:\n<pre>", !rewind($verbose), htmlspecialchars(stream_get_contents($verbose)), "</pre>\n";
输出是
详细信息: * 即将 connect() 到 hq.sinajs.cn 端口 80 (#0) * 正在尝试 202.108.37.102... * 已连接 * 已连接到 hq.sinajs.cn (202.108.37.102) 端口 80 (#0)
POST / HTTP/1.1 Host: hq.sinajs.cn Accept: / Content-Length: 13 Content-Type: application/x-www-form-urlencoded
- 上传完全发送:13 个字节中的 13 个
- 来自服务器的空回复
- 与主机 hq.sinajs.cn 的连接 #0 保持不变
详细信息: * 连接 #0 似乎已死!* 关闭连接 #0 * 即将 connect() 到 hq.sinajs.cn 端口 80 (#0) * 正在尝试 202.108.37.102... * 已连接 * 已连接到 hq.sinajs.cn (202.108.37.102) 端口 80 (# 0)
POST / HTTP/1.1 Host: hq.sinajs.cn Accept: / Content-Length: 13 Content-Type: application/x-www-form-urlencoded
- 上传完全发送:13 个字节中的 13 个
- 来自服务器的空回复
- 与主机 hq.sinajs.cn 的连接 #0 保持不变
我的问题是为什么与结果的差异如此之大?
- 网站服务器的根本原因是什么?它是否禁止 PHP cURL 访问?
- 如何解决问题?
提前致谢!