免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8614 | 回复: 8
打印 上一主题 下一主题

php socket模拟http请求返回乱码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-10 15:26 |只看该作者 |倒序浏览
rt
代码如下,不明白原因,麻烦大家指正一下

$httphead = <<<eof
GET /index.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; (R1 1.5); .NET CLR 1.1.4322)
Host: aa.aa.com\r\n\r\n
Connection: Keep-Alive \r\n\r\n
eof;
$length = strlen($httphead);
$sock = fsockopen("www.baidu.com",80);
fwrite($sock,$httphead,$length);
while (!feof($sock))
echo fgets($sock);

论坛徽章:
0
2 [报告]
发表于 2008-10-10 17:17 |只看该作者
header信息里面每行加入\r\n试试

论坛徽章:
0
3 [报告]
发表于 2008-10-10 17:36 |只看该作者
手册上就有个很好的例子

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128 ) ;
    }
    fclose($fp);
}
?>

[ 本帖最后由 vinchen 于 2008-10-10 17:38 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-10-13 10:33 |只看该作者
说不定页面被zip过了。解压吧.

论坛徽章:
0
5 [报告]
发表于 2008-10-13 11:26 |只看该作者

回复 #4 sunceenjoy 的帖子

请教一下,如何解压?谢谢

论坛徽章:
0
6 [报告]
发表于 2008-10-13 15:30 |只看该作者
用php的Snoopy的类吧, 何必自己构造这么辛苦

论坛徽章:
0
7 [报告]
发表于 2008-10-16 09:46 |只看该作者
要是我说的那种情况的话,有个什么phpzip类可以调用或者exec('gzip -d get.html');的返回值

论坛徽章:
0
8 [报告]
发表于 2011-03-25 10:12 |只看该作者
去掉这行就可以了。
Accept-Encoding: gzip, deflate

论坛徽章:
0
9 [报告]
发表于 2011-03-25 13:41 |只看该作者
找个没有gzip的网站测试一下啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP