0

我正在尝试将 CURL GET 数据发送到某个网站,但它似乎永远不会通过。

它需要类似于以下内容:

GET /webservices/ssl/something.asmx HTTP/1.1
Host: http://www.thewebsite.com

我尝试了以下方法,但似乎没有通过:

$url = "http://www.thewebsite.com/webservices/ssl/something.asmx";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.thewebsite.com'));
curl_setopt($ch, CURLOPT_HTTP_VERSION, 1.1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
print_r($result);
print_r($info);

print_r($result)什么都没有打印。甚至没有错误 404。我的问题是,我的卷曲是否正确?有什么我想念的吗?如果没有,请您帮我指出哪一个是错误以及如何解决?

4

2 回答 2

0

这种类型的行为通常发生在远程服务器拒绝为来自代理的请求提供服务时curlwget. 所以我们必须欺骗代理头。

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

您不需要以下标题,因为 curl 会自行处理。

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.thewebsite.com'));
curl_setopt($ch, CURLOPT_HTTP_VERSION, 1.1);

除此之外,如果您的网站需要 cookie,请不要忘记包括存储 cookie。

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");

最后,如果 curl_exec 返回FALSE检查curl_error()更多信息。

于 2013-07-04T07:46:41.610 回答
0

curl_init 有时会出现这种行为。尝试在 url 后添加斜杠“/”。

此外,考虑到函数 curl_init 应该返回 FALSE 如果有错误或者你有一个空的结果,就像你的情况一样。

于 2013-07-04T07:50:05.890 回答