Post返回400错误,可能是发送的数据有问题 谁来帮帮我

我是西瓜 2012-05-12 11:32:24
我写一个能通过post点击的我网页按钮的程序,可放回总是400错误
400 bad request
the request has an invalid header name
是我要发送的数据有问题吗 请大家帮我看一看。

protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = (int.Parse(Label1.Text) + 1).ToString();
}






#include "stdio.h"
#include "stdlib.h"
#include "winsock2.h"
#include"conio.h"
#pragma comment(lib,"ws2_32.lib")

int main()
{

SOCKET hsocket;
SOCKADDR_IN saServer;
WSADATA wsadata;
LPHOSTENT lphostent;
int nRet;
char* host_name="192.168.219.1";
char* reqHead="POST /default.aspx HTTP/1.1\r\n"
"pragma:no-cache\r\n"
"Accept:text/html, application/xhtml+xml, */*\r\n"
"Referer:http://192.168.219.1/default.aspx\r\n"
"Accept-Language:zh-CN\r\n"
"User-Agent:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)\r\n"
"Content-Type:application/x-www-form-urlencoded\r\n"
"Accept-Encoding:gzip,deflate\r\n"
"Host:192.168.219.1\r\n"
"Content-Length:192\r\n"
"Connection:Keep-Alive\r\n"
"Cache-Control:no-cache\r\n"
"__VIEWSTATE=%2FwEPDwUKLTMyNDcxODYzNQ9kFgICAw9kFgICAw8PFgIeBFRleHQFATJkZGSwHfmZ0K4tQfRw3xFfLisrdyd0wg%3D%3D&__EVENTVALIDATION=%2FwEWAgKWw8aHBgKM54rGBmWhGwUcHj2AyR2%2BpwXvfu0qkwRW&Button1=Button";

// 初始化套接字
while(1)
{
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(80);
saServer.sin_addr =*((LPIN_ADDR)*lphostent->h_addr_list);
// 利用SOCKET连接
nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN));
if(nRet == SOCKET_ERROR)
{
printf("建立连接时出错!");
closesocket(hsocket);
return 0;
}
// 利用SOCKET发送



if(getch()=='1')
{
nRet = send(hsocket,reqHead,strlen(reqHead),0);
if(nRet==SOCKET_ERROR)
{
printf("发送数据包时出错!");
closesocket(hsocket);
}
char Dest[3000]; memset(Dest,0,3000);
nRet=1;
while(nRet>0)
{
//send(hsocket,reqHead,strlen(reqHead),0);
// 接收返回数据包
nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);
if(nRet>0)
Dest[nRet]=0;
else
Dest[0]=0;
// 显示返回数据包的大小、内容
printf("\nReceived bytes:%d\n",nRet);
printf("Result:\n%s",Dest);

}
}
}

}
...全文
17914 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
suyuwen1 2014-12-11
  • 打赏
  • 举报
回复
400不一定是存在错误,可能是浏览器预加载造成,这篇文章测试了。 http://www.ihref.com/read-16479.html
suyuwen1 2014-12-11
  • 打赏
  • 举报
回复
400不一定是存在错误,可能是浏览器预加载造成,这篇文章测试了。 http://www.ihref.com/read-16479.html
尘雨 2012-05-12
  • 打赏
  • 举报
回复
http协议里,我记得http header和body之间需要两个回车换行。
我是西瓜 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

"Cache-Control:no-cache\r\n\r\n" 增加一个回车换行试试看
"__VIEWSTATE=%2FwEPDwUKLTMyNDcxODYzNQ9kFgICAw9kFgICAw8PFgIeBFRleHQFATJkZGSwHfmZ0K4tQfRw3xFfLisrdyd0wg%3D%3D&__EVENTVALIDATION=%2FwEWAgKWw8aHBgKM54rGB……
[/Quote]
非常感谢,可为什么加个回车就行了呢。
尘雨 2012-05-12
  • 打赏
  • 举报
回复
"Cache-Control:no-cache\r\n\r\n" 增加一个回车换行试试看
"__VIEWSTATE=%2FwEPDwUKLTMyNDcxODYzNQ9kFgICAw9kFgICAw8PFgIeBFRleHQFATJkZGSwHfmZ0K4tQfRw3xFfLisrdyd0wg%3D%3D&__EVENTVALIDATION=%2FwEWAgKWw8aHBgKM54rGBmWhGwUcHj2AyR2%2BpwXvfu0qkwRW&Button1=Button";
尘雨 2012-05-12
  • 打赏
  • 举报
回复
一时看不出来,你最好用http抓包分析工具,捕获正常的包数据和你的request header对比。工具如sniffer,http analyzerstd,commview等。

1.检查是否缺少回车换行。
2.检查post数据的编码。进行utf-8编码之后。post
gold_water 2012-05-12
  • 打赏
  • 举报
回复
检查一下发送的数据内容中是否有空格或其它特殊符号。
适用人群通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。课程概述通用各大网易系,腾讯QQ系,新浪系,阿里系等主流邮箱;同时也适用于企业开发的企业邮箱,进行收件和发件。POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。。【开发者如何进行快速开发邮件发送系统???本课程系统进行快速研发,项目实战】 部分截图如下:完整版请查看课件或者视频

18,356

社区成员

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

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