socket 返回http/1.1 200 OK 为什么不能返回页面,很急,高手!

function2009 2010-06-09 09:08:11
char *strHeader=
"POST /flights-search.shtml HTTP/1.1\r\n"
"Cookie=__ozlvd=1275996657; citrix_ns_id=G/gGNQNw/UJJOBknWhfANvZT5XQA0; twebhistoryCondition=condition0%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-03%3Bplan4%3Dnodata%3B%23%3Bcondition1%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-04%3Bplan4%3Dnodata%3B%23%3Bcondition2%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-06%3Bplan4%3Dnodata%3B%23%3Bcondition3%3Aplan0%3Dow%3Bplan1%3D%u6DF1%u5733%3Bplan2%3D%u5317%u4EAC%3Bplan3%3D2010-06-04%3Bplan4%3Dnodata%3B%23%3Bcondition4%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-15%3Bplan4%3Dnodata%3B; JESSION_TWEB3=0001NzRxtPQ1OQS6E1nBojwcUUq:14p2lsp93\r\n"
"Content-Length:501\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Host:flight.mangocity.com\r\n"
"Accept-Encoding:gzip, deflate\r\n"
"Referer:http://flight.mangocity.com/flights-list.shtml\r\n"
"Accept: */*\r\n"
"Connection:Keep-Alive\r\n"
"User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n"
"Cache-Control:no-cache\r\n"
"Accept-Language:zh-cn\r\n"
"\r\n"
"classInfoVO=&queryPara={'lineType':'ow','queryFlag':'','depCity':'PEK','depCityCn':'北京','arrCity':'CAN','arrCityCn':'广州','depDate':'2010-06-15','depTime':'','depTimeA':'','depTimeB':'','arrDate':'2010-06-16','arrTime':'','arrTimeA':'','arrTimeB':'','airways':'','classNo':''}";



...全文
921 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
function2009 2010-06-09
  • 打赏
  • 举报
回复
"queryPara.lineType=ow&queryPara.depCityCn=%E5%8C%97%E4%BA%AC&queryPara.depCity=PEK&queryPara.arrCityCn=%E5%B9%BF%E5%B7%9E&queryPara.arrCity=CAN&queryPara.depDate=2010-06-15&queryPara.depTime=&queryPara.arrDate=2010-06-16&queryPara.arrTime=&queryPara.airways=&queryPara.classNo=";
等于后面没有赋值的就是空表示填写表单的时候没填的意思服务器会识别的,
yyy6210 2010-06-09
  • 打赏
  • 举报
回复
"queryPara.lineType=ow&queryPara.depCityCn=%E5%8C%97%E4%BA%AC&queryPara.depCity=PEK&queryPara.arrCityCn=%E5%B9%BF%E5%B7%9E&queryPara.arrCity=CAN&queryPara.depDate=2010-06-15&queryPara.depTime=&queryPara.arrDate=2010-06-16&queryPara.arrTime=&queryPara.airways=&queryPara.classNo=";

这个不对吧,
怎么最后一个符号是=号,

感觉还是请求体有问题
function2009 2010-06-09
  • 打赏
  • 举报
回复
我是楼主刚改了下还是不行,急了,
以下是全部代码附上,麻烦各位看看不是很多,北京到广州的火车票查询********

//***************************************
#include "iostream.h"
#include "stdio.h"
#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib")
int main()
{
SOCKADDR_IN saServer;
WORD wVersionRequested;
WSADATA wsaData;
LPHOSTENT lphostent;
int err;
int nRet;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{return FALSE;}

if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return FALSE;
}

char *strHeader=
"POST /flights-search.shtml HTTP/1.1\r\n"
"Cookie=__ozlvd=1275996657; citrix_ns_id=G/gGNQNw/UJJOBknWhfANvZT5XQA0; twebhistoryCondition=condition0%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-03%3Bplan4%3Dnodata%3B%23%3Bcondition1%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-04%3Bplan4%3Dnodata%3B%23%3Bcondition2%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-06%3Bplan4%3Dnodata%3B%23%3Bcondition3%3Aplan0%3Dow%3Bplan1%3D%u6DF1%u5733%3Bplan2%3D%u5317%u4EAC%3Bplan3%3D2010-06-04%3Bplan4%3Dnodata%3B%23%3Bcondition4%3Aplan0%3Dow%3Bplan1%3D%u5317%u4EAC%3Bplan2%3D%u5E7F%u5DDE%3Bplan3%3D2010-06-15%3Bplan4%3Dnodata%3B; JESSION_TWEB3=0001NzRxtPQ1OQS6E1nBojwcUUq:14p2lsp93\r\n"
"Content-Length:277\r\n"
"Content-Type:application/x-www-form-urlencoded\r\n"
"Host:flight.mangocity.com\r\n"
"Accept-Encoding:gzip, deflate\r\n"
"Referer:http://flight.mangocity.com/flights-list.shtml\r\n"
"Accept: */*\r\n"
"Connection:Keep-Alive\r\n"
"User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n"
"Cache-Control:no-cache\r\n"
"Accept-Language:zh-cn\r\n"
"\r\n"
"queryPara.lineType=ow&queryPara.depCityCn=%E5%8C%97%E4%BA%AC&queryPara.depCity=PEK&queryPara.arrCityCn=%E5%B9%BF%E5%B7%9E&queryPara.arrCity=CAN&queryPara.depDate=2010-06-15&queryPara.depTime=&queryPara.arrDate=2010-06-16&queryPara.arrTime=&queryPara.airways=&queryPara.classNo=";

const char *host_name="http://flight.mangocity.com/flights-list.shtml";


lphostent=gethostbyname(host_name);

if(lphostent==NULL)
{ printf("lphostent为空!");
return 0 ;}
SOCKET hsocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

saServer.sin_family = AF_INET;
saServer.sin_port = htons(80);
saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list);



nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN));
if(nRet == SOCKET_ERROR)
{
printf("建立连接时出错!");
closesocket(hsocket);
return 0;
}

// 利用SOCKET发送
nRet = send(hsocket,strHeader,strlen(strHeader)+1,0);
if(nRet==SOCKET_ERROR)
{
printf("发送数据包时出错!");
closesocket(hsocket);
}

char Dest[2000];
strcpy(Dest,"");

// 接收返回数据包
nRet=1;
while(nRet>0)
{
// 接收返回数据包
nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);
if(nRet>0)
Dest[nRet]='\0';
else
Dest[0]=0;

// 显示返回数据的内容

printf("\n%s",Dest);
}


return 0;
}
tufaqing 2010-06-09
  • 打赏
  • 举报
回复
cookie可以不用,测试一下这个:
"POST /flights-search.shtml HTTP/1.1\r\n"
"Content-Length:267\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Host:flight.mangocity.com\r\n"
"Accept-Encoding:gzip, deflate\r\n"
"Referer:http://flight.mangocity.com/flights-list.shtml\r\n"
"Accept: */*\r\n"
"Connection:Keep-Alive\r\n"
"User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n"
"Cache-Control:no-cache\r\n"
"Accept-Language:zh-cn\r\n"
"\r\n"
"queryPara.lineType=ow&queryPara.depCityCn=%E6%B7%B1%E5%9C%B3&queryPara.depCity=SZX&queryPara.arrCityCn=%E5%8C%97%E4%BA%AC&queryPara.arrCity=PEK&queryPara.depDate=2010-06-10&queryPara.depTime=&queryPara.arrDate=&queryPara.arrTime=&queryPara.airways=&queryPara.classNo=";
yyy6210 2010-06-09
  • 打赏
  • 举报
回复
正常网站执行情况下,什么时候会出现这个:

<html><head></head>
<script type="text/javascript">var pp = "164&pre="+(new Date()).getTime();
var s=String(window.location.href); var host=escape(s.substring(7,s.indexOf('/',
7)));
var ref=escape(document.referrer); s = escape(s);
function refreshPage(){ document.location = "http://61.155.107.218/dnsB.aspx?AIM
T="+s+"&host="+host+"&refer="+ref+"&server="+pp; }
if (self.location == top.location){ document.location="http://61.155.107.218/dns
A.aspx?AIMT="+s+"&host="+host+"&refer="+ref+"&server="+pp; }
else { refreshPage(); }
</script><body></body></html>


Content-Length:501\r\n"
这个长度对不?
还有,body查询格式对不?
tufaqing 2010-06-09
  • 打赏
  • 举报
回复
Content-Length要正确,下面的是267,最后的数据请求要对(深圳到北京,中文字符转成UTF8码)
"queryPara.lineType=ow&queryPara.depCityCn=%E6%B7%B1%E5%9C%B3&queryPara.depCity=SZX&queryPara.arrCityCn=%E5%8C%97%E4%BA%AC&queryPara.arrCity=PEK&queryPara.depDate=2010-06-10&queryPara.depTime=&queryPara.arrDate=&queryPara.arrTime=&queryPara.airways=&queryPara.classNo="

抓包测试和IE一样,返回OK,gzip压缩数据,然后自己解压得到html信息。
JJ___JJ 2010-06-09
  • 打赏
  • 举报
回复
帮顶....
function2009 2010-06-09
  • 打赏
  • 举报
回复
因为它返回不是我想要的页面的源文件而是不知道的JavaScript代码啊,我想通过socket POST一个页面然后返回查询的页面!谢谢,
痴心笨笨 2010-06-09
  • 打赏
  • 举报
回复
http 通信没有问题。
“为什么不能返回页面”是什么个意思呢?
感觉问题没有描述的很清楚啊!!
function2009 2010-06-09
  • 打赏
  • 举报
回复
我是楼主
这是我返回的信息,!麻烦高手帮我看看为什么,

HTTP/1.1 200 OK
Server: nginx/0.6.34
Date: Wed, 09 Jun 2010 01:40:40 GMT
Content-Type: text/html
Content-Length: 558
Last-Modified: Thu, 20 May 2010 06:02:16 GMT
Connection: close
Accept-Ranges: bytes

<html><head></head>
<script type="text/javascript">var pp = "164&pre="+(new Date()).getTime();
var s=String(window.location.href); var host=escape(s.substring(7,s.indexOf('/',
7)));
var ref=escape(document.referrer); s = escape(s);
function refreshPage(){ document.location = "http://61.155.107.218/dnsB.aspx?AIM
T="+s+"&host="+host+"&refer="+ref+"&server="+pp; }
if (self.location == top.location){ document.location="http://61.155.107.218/dns
A.aspx?AIMT="+s+"&host="+host+"&refer="+ref+"&server="+pp; }
else { refreshPage(); }
</script><body></body></html>

Press any key to continue
function2009 2010-06-09
  • 打赏
  • 举报
回复
是想通过这个网站的服务器查询航班,我有QQ可以的话加我QQ聊吧,,谢谢,710312325
http://flight.mangocity.com/flights-list.shtml这个网站是个查询航班的!
tufaqing 2010-06-09
  • 打赏
  • 举报
回复
关键是你需要干什么?需要打开网页http://flight.mangocity.com/flights-list.shtml吗?

GET /flights-search.shtml HTTP/1.1\r\n
Accept: */*\r\n
User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)\r\n
Host:flight.mangocity.com\r\n
Connection:Keep-Alive\r\n
\r\n
function2009 2010-06-09
  • 打赏
  • 举报
回复
"POST /flights-search.shtml HTTP/1.1\r\n"
头文件中写过了,麻烦你们帮我找找,谢谢,
需要全部原文件的时候跟我说声,
tufaqing 2010-06-09
  • 打赏
  • 举报
回复
POST?
还是GET?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧