• 全部
...

Socket发送HTTP/1.1请求总是返回400 bad request

wanghuiaye 2009-10-19 09:44:27
小弟最近用socket发送http请求到目标主机,为了排除干扰,双机用交叉线互联,
接收端主机IP:59.78.188.217
代码如下:
byte[] bytes = Encoding.ASCII.GetBytes("GET /test1 HTTP/1.1\r\nHost: 59.78.188.217/\r\nUser-Agent: Mozilla/4.0\r\nAccept: */*\r\nConnection:Close\r\n\r\n");

把这个http请求用socket发送出去,接收端用wireshark抓包,总是返回400 bad request
socket确定没问题
编码方式:default,ascii,utf8都试过了,结果一样杯具。。
网上查了很多资料,http1.1头的格式到底该如何写?还请大家不吝赐教
...全文
给本帖投票
2715 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdsuper 2011-03-31
  • 打赏
  • 举报
回复
看我的写法还是也出现这问题楼主有QQ不
Get data?race_date=31-03-2011&race_type=15Z&rc=5&x=0.23670741955064 HTTP/1.1
Accept: */*
Referer: Accept-Language:zh-cn
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.6; .NET CLR 2.0.50727)
Host: cn.citibet.net
Connection:Keep-Alive
Cookie: JSESSIONID=C4990CC80199E98429BDE5F8B8077462.node27;lang=CH;load_balancer=f39d9dc1-9f01-44c0-aa63-d7339a27ba2c;
wanghuiaye 2009-10-19
  • 打赏
  • 举报
回复
谢谢大家

我用浏览器试过了,地址栏输入http://59.78.188.217/test1没有问题

我把浏览器生成的http请求报文抓下来,在copy到我这里,用socket发送,还是bad request,不过我刚才注意了一下在错误的详细信息:Invalid Verb

目前在google中
加油馒头 2009-10-19
  • 打赏
  • 举报
回复
1.你的头写错了(找正确的写法)
2.服务器端 用问题(可以直接用浏览器 访问下,看时候有问题)
wenbin 2009-10-19
  • 打赏
  • 举报
回复
string send =
@"GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: 216.152.164.80
Connection: Keep-Alive
Accept-Language: zh-cn

";
wuyq11 2009-10-19
  • 打赏
  • 举报
回复
请求出现语法错误,http头问题

System.Net.HttpWebRequest myRequest =(System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
myRequest.Method = "HEAD";
myRequest.Timeout = 100;
System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)myRequest.GetResponse();
http://topic.csdn.net/u/20091015/21/cba7bce2-367e-49eb-9ba9-c060ebf3261a.html
_see_you_again_ 2009-10-19
  • 打赏
  • 举报
回复
建议使用SYstem.net.HttpWebRequest对象
_see_you_again_ 2009-10-19
  • 打赏
  • 举报
回复
400-错误的请求:客户端请求不存在的页面,客户端未提供有效的身份验证信息。
wanghuiaye 2009-10-19
  • 打赏
  • 举报
回复
终于找到了,我自己写的socket加了一些信息在payload上,导致http头不正确,多谢大家,结贴了:)
这样的头:GET /test1 HTTP/1.1\r\nHost: 59.78.188.217\r\n\r\n 就可以过了

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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

手机看
关注公众号

关注公众号

客服 返回
顶部