Chinaunix
标题:
https 发送GET请求 接收不到页面信息【已解决】
[打印本页]
作者:
ast_224
时间:
2008-10-14 11:01
标题:
https 发送GET请求 接收不到页面信息【已解决】
主要的send和recv代码如下:
.....
.....
sprintf(request, "GET /%s HTTP/1.1\r\nAccept: */*\r\nAccept-Language: zh-cn\r\n\
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n\
Host: %s:%d\r\nConnection: Close\r\n\r\n", host_file, host_addr, portnumber);/*准备request,将要发送给主机*/
send = 0;
totalsend = 0;
nbytes = strlen(request);
while (totalsend < nbytes)
{
send = SSL_write(ssl, request + totalsend, nbytes - totalsend);
if (send == -1)
{
ERR_print_errors_fp(stderr);
exit(0);
}
totalsend += send;
printf("%d bytes send OK!\n", totalsend);
}
/* 连接成功了,接收http响应,response */
if ((iLength=SSL_read(ssl, buffer, MAX_DATA_SIZE)) > 0)
{
buffer[iLength]='\0';
printf("recv :\n%s",buffer);
}
程序一切正常,但就是通过ssl_read所接收到的打印数据没有页面信息,如同发送HEAD请求一样收到的仅仅是请求页面的首部,
在做http时,通过发送GET请求,用recv()函数就可以将页面信息全部获取
不知问题出在哪啦,望达人解答~~
[
本帖最后由 ast_224 于 2008-10-15 17:05 编辑
]
作者:
andrew913
时间:
2008-10-14 12:33
标题:
回复 #1 ast_224 的帖子
我不知道,但是顶你一下。
难得一个女生搞程序
作者:
gothicane
时间:
2008-10-14 12:45
有可能ssl_read一次并没有读到所有的数据吧,多读几次试试
作者:
ast_224
时间:
2008-10-14 13:04
buffer已经设的足够了,试了很多次,都只能读出首部信息
不知SSL_read是不是对接收的数据有限制
在这里似乎GET和HEAD没有什么区别
仍然迷惑中~~
作者:
ast_224
时间:
2008-10-14 15:52
有没有和我遇到类似问题的啊
关于ssl_read的接收很迷惑,原本应该会出现在buffer有限的范围类的全部信息的啊
有熟悉OpenSSL的达人路过的话,顺便指定一下哈~·
[
本帖最后由 ast_224 于 2008-10-14 16:03 编辑
]
作者:
jsean
时间:
2008-10-15 05:16
先抓包看一下,是否对端正确响应了。
作者:
ast_224
时间:
2008-10-15 09:37
标题:
回复 #6 jsean 的帖子
包是完整的
有可能是报文的payload部分有0,做为字符串读取就被截断了
还是不闲麻烦单个字符的接收,可以全部获取数据~
3Q~
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2