📄 http.c
字号:
sprintf(s_inputtype[i],"");
sprintf(s_inputvalue[i],"");
sprintf(s_inputid[i],"");
sprintf(s_inputsize[i],"");
}
//组装GET消息
s=Make_HTTPRequest(buf,
s_Method,
s_URI,
s_Version,
s_Referer,
s_Accept,
s_Accept_Language,
s_Content_Type,
s_Accept_Encoding,
s_User_Agent,
s_Host,
s_Content_Length,
s_Connection,
s_Cache_Control,
s_Cookie,
s_HTMLStr,
i_HTMLLen);
sent=0;//未发出数据
recved=0;//未收到数据
sendflag=1;//需要发送Request
recvflag=1;//需要接收Respone
iState=2;//下一状态2
break;//1
case 2:
//分析回复消息
if(1==recved)//已经收到数据
{
i=Get_HTTPRespone(rec,
r_Respone_Version,
r_Respone_Code,
r_Respone_Mark,
r_Server,
r_Date,
r_Content_Length,
r_Content_Type,
r_Cache_control,
r_Accept_Ranges,
r_Last_Modified,
r_ETag,
r_Expires,
r_Set_Cookie,
&i_HeadLen);
s_iLen=recvlen-i_HeadLen;//HTML长度为接收长度减去头长度
iALen=Get_HTMLData((rec+i_HeadLen),
s_iLen,
s_href,
s_src,
s_action,
s_inputname,
s_inputtype,
s_inputvalue,
s_inputid,
s_inputsize);
}
if(0==strcmp("200",r_Respone_Code))
{//回复成功,继续处理
//填Referer
sprintf(s_Referer,l_Referer);
//取第一个连接,拼装URI
tmp=strstr(s_src[0],"/");//不要..
sprintf(s_URI,"%s",tmp);
//如果回复中要求,重设Cookie
if(0<strlen(r_Set_Cookie))
{
bufBegin=r_Set_Cookie;
bufEnd=strstr(r_Set_Cookie,";");
strncpy(s_Cookie,bufBegin,(bufEnd-bufBegin));
s_Cookie[bufEnd-bufBegin]=0;
}
//sprintf(s_Cookie,r_Set_Cookie);
//组装GET消息
s=Make_HTTPRequest(buf,
s_Method,
s_URI,
s_Version,
s_Referer,
s_Accept,
s_Accept_Language,
s_Content_Type,
s_Accept_Encoding,
s_User_Agent,
s_Host,
s_Content_Length,
s_Connection,
s_Cache_Control,
s_Cookie,
s_HTMLStr,
i_HTMLLen);
sendflag=1;//要发送
recvflag=1;//要接收
sent=0;
recved=0;
iState=3;
};//if(1==recved)
break;//2
case 3://GET /images/younkee_logo.jpg
//分析回复消息
if(1==recved)//已经收到数据
{
i=Get_HTTPRespone(rec,
r_Respone_Version,
r_Respone_Code,
r_Respone_Mark,
r_Server,
r_Date,
r_Content_Length,
r_Content_Type,
r_Cache_control,
r_Accept_Ranges,
r_Last_Modified,
r_ETag,
r_Expires,
r_Set_Cookie,
&i_HeadLen);
s_iLen=recvlen-i_HeadLen;//已接收长度
rLen=atoi(r_Content_Length);//总长度
}
if(0==strcmp("200",r_Respone_Code))
{//回复成功,继续处理
//收照片,但当照片较大时需要多次RECV。
//FILE *hd;
tmp=strstr((s_URI+1),"/")+1;//不要/
//sprintf(s_URI,"%s",tmp);
hd=fopen(tmp,"ab");//取文件名
fwrite((rec+i_HeadLen),s_iLen,1,hd);//先写一部分
while(rLen>s_iLen)
{
recvlen=LongStrLen;
if((recvlen=recv(sock,rec,recvlen,0))<0)
{
closesocket(sock);
printf_view("sock recv error ");
return FAIL;
}
fwrite(rec,recvlen,1,hd);
s_iLen=s_iLen+recvlen;
};
fclose(hd);
sendflag=0;//不要发送
recvflag=0;//不要接收
sent=0;
recved=0;
iState=5;
};//if(1==recved)
break;
case 5://GET /term/myterm.asp?action=myterm
//准备GET的参数
sprintf(s_Method,"GET");
sprintf(s_URI,"/term/myterm.asp?action=myterm");
sprintf(s_Version,"HTTP/1.1");
sprintf(s_Referer,"http://192.168.6.33/term/index.asp");
sprintf(s_Accept,"*/*");
sprintf(s_Accept_Language,"zh-cn");
sprintf(s_Accept_Encoding,"gzip, deflate");
sprintf(s_Content_Type,"");//GET没有Content-Type内容
sprintf(s_User_Agent,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; WPS; TencentTraveler )");
sprintf(s_Host,server_addr);
sprintf(s_Connection,"Keep-Alive");
sprintf(s_Cache_Control,"");
//如果回复中要求,重设Cookie
if(0<strlen(r_Set_Cookie))
{
bufBegin=r_Set_Cookie;
bufEnd=strstr(r_Set_Cookie,";");
strncpy(s_Cookie,bufBegin,(bufEnd-bufBegin));
s_Cookie[bufEnd-bufBegin]=0;
}
//sprintf(s_Cookie,r_Set_Cookie);
//sprintf(s_Cookie,"ASPSESSIONIDQSSRRBCA=MKNFDBKBLKPCBMOLDPDBECLM");
//记录Referer
sprintf(l_Referer,"http://%s%s",s_Host,s_URI);
//HTML内容
sprintf(s_HTMLStr,"");//GET没有HTML内容
i_HTMLLen=0;
sprintf(s_Content_Length,"");//GET没有Content-Length内容
//清空部分参数
for(i=0;i<8;i++)
{
sprintf(s_href[i],"");
sprintf(s_src[i],"");
sprintf(s_action[i],"");
sprintf(s_inputname[i],"");
sprintf(s_inputtype[i],"");
sprintf(s_inputvalue[i],"");
sprintf(s_inputid[i],"");
sprintf(s_inputsize[i],"");
}
//组装GET消息
s=Make_HTTPRequest(buf,
s_Method,
s_URI,
s_Version,
s_Referer,
s_Accept,
s_Accept_Language,
s_Content_Type,
s_Accept_Encoding,
s_User_Agent,
s_Host,
s_Content_Length,
s_Connection,
s_Cache_Control,
s_Cookie,
s_HTMLStr,
i_HTMLLen);
sent=0;//未发出数据
recved=0;//未收到数据
sendflag=1;//需要发送Request
recvflag=1;//需要接收Respone
iState=7;//下一状态7
break;
case 7://POST /term/chkterm.asp
//分析回复消息
if(1==recved)//已经收到数据
{
i=Get_HTTPRespone(rec,
r_Respone_Version,
r_Respone_Code,
r_Respone_Mark,
r_Server,
r_Date,
r_Content_Length,
r_Content_Type,
r_Cache_control,
r_Accept_Ranges,
r_Last_Modified,
r_ETag,
r_Expires,
r_Set_Cookie,
&i_HeadLen);
s_iLen=recvlen-i_HeadLen;//HTML长度为接收长度减去头长度
iALen=Get_HTMLData((rec+i_HeadLen),
s_iLen,
s_href,
s_src,
s_action,
s_inputname,
s_inputtype,
s_inputvalue,
s_inputid,
s_inputsize);
}
if(0==strcmp("200",r_Respone_Code))
{//回复成功,继续处理
sprintf(s_Method,"POST");//
sprintf(s_URI,"/term/chkterm.asp");
sprintf(s_Version,"HTTP/1.1");
sprintf(s_Accept,"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*");//
sprintf(s_Referer,"http://192.168.6.33/term/myterm.asp?action=myterm");
sprintf(s_Accept_Language,"zh-cn");
sprintf(s_Content_Type,"application/x-www-form-urlencoded");//
sprintf(s_Accept_Encoding,"gzip, deflate");
sprintf(s_User_Agent,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; WPS; TencentTraveler )");
sprintf(s_Host,server_addr);
sprintf(s_Connection,"Keep-Alive");
sprintf(s_Cache_Control,"no-cache");
//如果回复中要求,重设Cookie
if(0<strlen(r_Set_Cookie))
{
bufBegin=r_Set_Cookie;
bufEnd=strstr(r_Set_Cookie,";");
strncpy(s_Cookie,bufBegin,(bufEnd-bufBegin));
s_Cookie[bufEnd-bufBegin]=0;
}
//sprintf(s_Cookie,r_Set_Cookie);
//sprintf(s_Cookie,"ASPSESSIONIDQSCDCCSS=INKLMCPCAHBICOIFENPMBLJO");
//strcpy(s_HTMLStr,"termsn=13907810781&comeurl=http%3A%2F%2F192.168.6.33%2Fterm%2Findex.asp&snpassword=b1e3445679573fe6&Submit=%E7%BB%88%E7%AB%AF%E7%99%BB%E5%BD%95");//
//sprintf(s_HTMLStr,"termsn=13907810781&comeurl=http://192.168.6.33/term/index.asp&snpassword=b1e3445679573fe6&Submit=终端登陆");//
sprintf(s_HTMLStr,"termsn=13907810781&snpassword=b1e3445679573fe6");//只出现关键数据就可以了,SUBMIT等可以不出现。
i_HTMLLen=strlen(s_HTMLStr);
sprintf(s_Content_Length,"%i",i_HTMLLen);
//组装GET消息
s=Make_HTTPRequest(buf,
s_Method,
s_URI,
s_Version,
s_Referer,
s_Accept,
s_Accept_Language,
s_Content_Type,
s_Accept_Encoding,
s_User_Agent,
s_Host,
s_Content_Length,
s_Connection,
s_Cache_Control,
s_Cookie,
s_HTMLStr,
i_HTMLLen);
//if(sock)
// closesocket(sock);//结束对话就关SOCK
//connflag=1;
sendflag=1;//要发送
recvflag=1;//要接收
sent=0;
recved=0;
iState=8;
};//if(0==strcmp("200",r_Respone_Code))
break;
case 8://GET /term/myterm.asp?action=myterm
//分析回复消息
if(1==recved)//已经收到数据
{
i=Get_HTTPRespone(rec,
r_Respone_Version,
r_Respone_Code,
r_Respone_Mark,
r_Server,
r_Date,
r_Content_Length,
r_Content_Type,
r_Cache_control,
r_Accept_Ranges,
r_Last_Modified,
r_ETag,
r_Expires,
r_Set_Cookie,
&i_HeadLen);
s_iLen=recvlen-i_HeadLen;//HTML长度为接收长度减去头长度
iALen=Get_HTMLData((rec+i_HeadLen),
s_iLen,
s_href,
s_src,
s_action,
s_inputname,
s_inputtype,
s_inputvalue,
s_inputid,
s_inputsize);
}
if(0==strcmp("100",r_Respone_Code))
recvflag=1;//要接收
if(0==strcmp("200",r_Respone_Code))
{//回复成功,继续处理
sprintf(s_Method,"GET");//
sprintf(s_URI,"/term/myterm.asp?action=myterm");
sprintf(s_Version,"HTTP/1.1");
sprintf(s_Accept,"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*");//
sprintf(s_Referer,"");
sprintf(s_Accept_Language,"zh-cn");
sprintf(s_Content_Type,"");//
sprintf(s_Accept_Encoding,"gzip, deflate");
sprintf(s_User_Agent,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 1.7; WPS; TencentTraveler )");
sprintf(s_Host,server_addr);
sprintf(s_Connection,"Keep-Alive");
sprintf(s_Cache_Control,"");
//如果回复中要求,重设Cookie
if(0<strlen(r_Set_Cookie))
{
bufBegin=r_Set_Cookie;
bufEnd=strstr(r_Set_Cookie,";");
strncpy(s_Cookie,bufBegin,(bufEnd-bufBegin));
s_Cookie[bufEnd-bufBegin]=0;
}
//sprintf(s_Cookie,r_Set_Cookie);
//sprintf(s_Cookie,"ASPSESSIONIDQSCDCCSS=INKLMCPCAHBICOIFENPMBLJO");
//strcpy(s_HTMLStr,"termsn=13907810781&comeurl=http%3A%2F%2F192.168.6.33%2Fterm%2Findex.asp&snpassword=b1e3445679573fe6&Submit=%E7%BB%88%E7%AB%AF%E7%99%BB%E5%BD%95");//
//sprintf(s_HTMLStr,"termsn=13907810781&comeurl=http://192.168.6.33/term/index.asp&snpassword=b1e3445679573fe6&Submit=终端登陆");//
sprintf(s_HTMLStr,"");//
i_HTMLLen=0;
sprintf(s_Content_Length,"");
//组装GET消息
s=Make_HTTPRequest(buf,
s_Method,
s_URI,
s_Version,
s_Referer,
s_Accept,
s_Accept_Language,
s_Content_Type,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -