VC post表单

来源:互联网 发布:51单片机入门 编辑:程序博客网 时间:2024/05/20 13:07

参考文章:http://blog.csdn.net/wangningyu/article/details/4526551

注意:原文将回车换行符写成了/r/n,我使用时,程序异常,将其改成\r\n即可。

----------------------------------------------------------------------------------------------------------------------------------------------------------

html 登录页面截图:

---------------------------------------------------------------------------------------------------------------------

登录页面表单源码:

<form  action="/hyx/WanJiaLoginServlet" method="post"><label>账号:<span></span></label><input  type="text"  name="userName" maxlength="20" value="zhang3"/><label>密码:<span></span></label><input type="password"  name="userPass" maxlength="30" value="123456"/><input  type="submit"  value="登陆"  name="submit"  class="submit"/><a href="wanjiaReg.jsp">注册</a><a href="/hyx/index.html">首页</a></form>

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

点登录时,使用Fildder抓到的包如下:

POST http://407a08:8080/hyx/WanJiaLoginServlet HTTP/1.1
Host: 407a08:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://407a08:8080/hyx/wanjia/wanjiaLogin.jsp
Cookie: JSESSIONID=8DFF29BB78EEEE2FDE7CE3302B1821F7
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 31

userName=zhang3&userPass=123456

-------------------------------------------------------------------------------------------------------------------------------

点登录时,使用Fildder抓到的服务器返回的包如下:

HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=A3EE2EA6D26871AD9E65B74E95A32FDE; Path=/hyx
Location: http://407a08:8080/hyx/wanjia/flex/index.html
Content-Length: 0
Date: Tue, 03 Jun 2014 12:11:57 GMT

---------------------------------------------------------------------------------------------------------------------------------

Fiddler抓包截图:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

清楚了提交给服务器的包,接下来可以写程序进行提交了,代码如下:

#include "stdafx.h"#include "stdio.h" #include "winsock2.h"  #include<stdlib.h>#pragma   comment(lib,"ws2_32.lib")   int main(int argc, char* argv[]){SOCKADDR_INsaServer;LPHOSTENTlphostent;WSADATAwsadata;SOCKEThsocket;intnRet;char*   host_name="192.168.47.18";char*   req="POST http://407a08:8080/hyx/WanJiaLoginServlet   HTTP/1.1\r\n""Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,\r\n""Referer:http://192.168.47.17:8080/hyx/admin/login.jsp\r\n""Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3\r\n""Content-Type:application/x-www-form-urlencoded\r\n""Accept-Encoding:gzip, deflate\r\n""User-Agent:Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0\r\n"   "Host:407a08:8080\r\n""Content-Length:31\r\n""Connection:keep-alive\r\n""Cookie:JSESSIONID=F78B7D4C76181B5B08485246CE9FF8AE\r\n\r\n""userName=zhang3&userPass=123456";// 初始化套接字if(WSAStartup(MAKEWORD(2,2),&wsadata))   printf("初始化SOCKET出错!");lphostent=gethostbyname(host_name);   if(lphostent==NULL)   printf("lphostent为空!");hsocket   =   socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);   saServer.sin_family = AF_INET;   saServer.sin_port = htons(8080);   //saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list);saServer.sin_addr.S_un.S_addr=inet_addr(host_name);// 利用SOCKET连接nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(saServer));   if(nRet == SOCKET_ERROR)   {   printf("建立连接时出错!errorCode=%d ",WSAGetLastError());   closesocket(hsocket);   system("pause");return 0;   }// 利用SOCKET发送nRet = send(hsocket,req,strlen(req),0);if(nRet==SOCKET_ERROR){printf("发送数据包时出错!");closesocket(hsocket);system("pause");}printf("发送数据包完毕!nRet=%d \n",nRet);char   Dest[3000];   nRet=1;   while(nRet>0)   {// 接收返回数据包nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);   if(nRet>0)   Dest[nRet]=0;   else   Dest[0]=0;// 显示返回数据包的大小、内容printf("返回数据包的大小,nRet=%d \n",nRet);   printf("返回数据:%s \n",Dest);   }getchar();return 0;}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

效果截图如下:

-----------------------------------------------------------------------------------------------------------------------------------------


您的十分满意是我追求的宗旨。

您的一点建议是我后续的动力。







0 0
原创粉丝点击