⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http.c

📁 HTTP客户端例子程序 用HTTP协议与WEB网站通信
💻 C
📖 第 1 页 / 共 5 页
字号:
					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 + -