cURL PHP GET没有发送

时间:2013-07-04 07:43:33

标签: php curl get

我正在尝试将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。 我的问题是,我的卷曲是正确的吗?有什么我想念的吗? 如果没有,请你帮我指出哪一个是错误以及如何解决?

2 个答案:

答案 0 :(得分: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()以获取更多信息。

答案 1 :(得分:0)

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

此外,考虑到函数curl_init应该返回FALSE(如果有错误或者你的结果是空的)。