应公司老板要求,用curl做了一个模拟登陆网站(和讯博客)并提交数据的程序,
登陆部分可正常使用,但在发布博客文章的时候遇到了一点困难,自己实在搞不清楚问题在哪里。
我用curl的post方法提交数据的时候,发布失败,返回内容为空,返回头信息如下:HTTP/1.1 200 OK Server: nginx/0.8.15 Date: Thu, 29 Oct 2009 08:38:18 GMT Content-Type: text/html;
charset=gb2312 Connection: close X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Cache-Control: private
Content-Length: 252 用ie浏览器发布博客文章,借助一些抓包工具的时候返回内容正常,可以正常发布,返回头信息如下:
HTTP/1.1 200 OK
Connection:keep-alive
Content-Location:http://post.blog.hexun.com/xml/redirect.htm?404;http://post.blog.hexun.com:80/myw1796/postarticlesubmit.asp
Accept-Ranges:bytes
Content-Length:2329
Content-Type:text/html
Date:Thu, 29 Oct 2009 08:41:58 GMT
ETag:"4193b1e5ef4ca1:314"
Last-Modified:Wed, 15 Jul 2009 01:59:33 GMT
Server:nginx/0.8.15
X-Powered-By:ASP.NET我用cur提交的时候返回的:Connection: close是什么意思啊?自己上学的时候对http协议没学好,是不是这个原因?
接下来我应当如何测试呢?
登陆部分可正常使用,但在发布博客文章的时候遇到了一点困难,自己实在搞不清楚问题在哪里。
我用curl的post方法提交数据的时候,发布失败,返回内容为空,返回头信息如下:HTTP/1.1 200 OK Server: nginx/0.8.15 Date: Thu, 29 Oct 2009 08:38:18 GMT Content-Type: text/html;
charset=gb2312 Connection: close X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Cache-Control: private
Content-Length: 252 用ie浏览器发布博客文章,借助一些抓包工具的时候返回内容正常,可以正常发布,返回头信息如下:
HTTP/1.1 200 OK
Connection:keep-alive
Content-Location:http://post.blog.hexun.com/xml/redirect.htm?404;http://post.blog.hexun.com:80/myw1796/postarticlesubmit.asp
Accept-Ranges:bytes
Content-Length:2329
Content-Type:text/html
Date:Thu, 29 Oct 2009 08:41:58 GMT
ETag:"4193b1e5ef4ca1:314"
Last-Modified:Wed, 15 Jul 2009 01:59:33 GMT
Server:nginx/0.8.15
X-Powered-By:ASP.NET我用cur提交的时候返回的:Connection: close是什么意思啊?自己上学的时候对http协议没学好,是不是这个原因?
接下来我应当如何测试呢?
{
if(strtolower($code) != "utf-8")
{
$data = iconv("utf-8","{$code}//IGNORE",$data);
}
$ch = curl_init(); // 启动一个CURL会话
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);// 模拟用户使用的浏览器
curl_setopt($ch,CURLOPT_AUTOREFERER,$refer ? $refer : 1); // 自动设置Referer
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,$jump); // 使用自动跳转
curl_setopt($ch,CURLOPT_POST,1); // 发送一个常规的Post请求
curl_setopt($ch,CURLOPT_POSTFIELDS,$data); // Post提交的数据包
curl_setopt($ch,CURLOPT_COOKIEJAR,$this->cookie); // 存放Cookie信息的文件名称
curl_setopt($ch,CURLOPT_COOKIEFILE,$this->cookie); // 读取Cookie
curl_setopt($ch,CURLOPT_TIMEOUT,30); // 设置超时限制防止死循环
curl_setopt($ch,CURLOPT_HEADER,1); //不示返回的Header区域内容
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//设定返回的数据是否自动显示
$info = curl_exec($ch);
$info = $this->safeEncoding($info);
curl_close($ch);
return $info;
}