tc.Connect(HttpCommon.IPADDRESS, HttpCommon.PORT);
ns = tc.GetStream();
String message = "";
message+= "GET /club/garden.html HTTP/1.1 \n";
Byte[] data =Encoding.Unicode.GetBytes(message);
ns.Write(data, 0, data.Length);
Thread.Sleep(TimeSpan.FromMilliseconds(500d));
string recivestring="";
if (ns.DataAvailable){
byte[] buf = new Byte[1024];
int Len = ns.Read(buf, 0, buf.Length);
recivestring = Encoding.ASCII.GetString(buf, 0, Len);
}
this.richTextBox1.Text = recivestring;
调试得到的结果是:
HTTP/1.1 400 Bad Request ( The data is invalid. )
苦思中,不知问题出在哪儿,还请有经验者指点
24 个解决方案
#1
Byte[] data =Encoding.Unicode.GetBytes(message);
-----------------------------------------------------
Byte[] data =Encoding.Unicode.GetBytes(message.ToCharArray());
试试
-----------------------------------------------------
Byte[] data =Encoding.Unicode.GetBytes(message.ToCharArray());
试试
#2
GET .....
Host: ???
没有host头,http请求会失败
Host: ???
没有host头,http请求会失败
#3
Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
#4
GET /wzd24/index.html HTTP/1.1
Accept: */*
Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Data Center; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: 192.168.0.54:82
Connection: Keep-Alive
Cookie: visitorId=9d5222c74ffc4155b5d1f1dd265b326f
------------------------------------------------------------
这是一个比较完整的HTTP请求包。
其中
Get,Host是必须存在的。缺一不可。你少了HOST,当然会被返回400错误。
Accept: */*
Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Data Center; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: 192.168.0.54:82
Connection: Keep-Alive
Cookie: visitorId=9d5222c74ffc4155b5d1f1dd265b326f
------------------------------------------------------------
这是一个比较完整的HTTP请求包。
其中
Get,Host是必须存在的。缺一不可。你少了HOST,当然会被返回400错误。
#5
那错误就不在上面的代码了..
楼主贴出出错的地方...
楼主贴出出错的地方...
#6
牧兄早..
#7
回复hdt, wzd24 :
我在程序中添加了:
message += "Host:218.16.124.76:80 \n"; //www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
我在程序中添加了:
message += "Host:218.16.124.76:80 \n"; //www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
#8
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(new System.Uri(a_strUrl));
myReq.Method = "GET";
myReq.Accept = "*/*";
myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
程序里面可以这样...
myReq.Method = "GET";
myReq.Accept = "*/*";
myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
程序里面可以这样...
#9
回浪客:
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
#10
xingxing810512(星星) ( ) 信誉:91 Blog 加为好友 2007-5-18 9:49:57 得分: 0
回复hdt, wzd24 :
我在程序中添加了:
message += "Host:218.16.124.76:80 \n";//www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
-------------------------------------------------------------
所面要跟\r\n而不只是一个\n。
---------------------------------------------------------------
To:zhangliu_521(浪客)
你也早啊!
呵呵………………
回复hdt, wzd24 :
我在程序中添加了:
message += "Host:218.16.124.76:80 \n";//www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
-------------------------------------------------------------
所面要跟\r\n而不只是一个\n。
---------------------------------------------------------------
To:zhangliu_521(浪客)
你也早啊!
呵呵………………
#11
\n
====>
\r\n
====>
\r\n
#12
还有,最后还要跟一个空行。也就是说最后要是\r\n\r\n这样的!
#13
回浪客:
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
-----------------------------------------------------------------
HttpWebRequest myReq;
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
-----------------------------------------------------------------
HttpWebRequest myReq;
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
#14
回上:
程序修改如下:
String message = "";
message += "GET /club/garden.html HTTP/1.1 \r\n";
message += "Host:www.lili.cc \r\n";
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \r\n";
message += "Accept-Encoding: gzip, deflate \r\n";
message += "Connection: Keep-Alive\r\n\r\n";
完整的错误结果:
HTTP/1.1 400 Bad Request ( The data is invalid. )
Via: 1.1 PROXYCENT
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 1946
程序修改如下:
String message = "";
message += "GET /club/garden.html HTTP/1.1 \r\n";
message += "Host:www.lili.cc \r\n";
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \r\n";
message += "Accept-Encoding: gzip, deflate \r\n";
message += "Connection: Keep-Alive\r\n\r\n";
完整的错误结果:
HTTP/1.1 400 Bad Request ( The data is invalid. )
Via: 1.1 PROXYCENT
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 1946
#15
sorry 你要ns发送...
我这是程序...
我这是程序...
#16
回浪客:
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
#17
回浪客:
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
----------------------------------------------------------------
我现在用的都是获取和设置..
自定义 LZ可以参考HttpwebRequest 类的详细资料.sorry没研究过
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
----------------------------------------------------------------
我现在用的都是获取和设置..
自定义 LZ可以参考HttpwebRequest 类的详细资料.sorry没研究过
#18
Byte[] data =Encoding.Unicode.GetBytes(message);
把这个改成
Byte[] data =Encoding.ASCII.GetBytes(message);
或
Byte[] data =Encoding.UTF8.GetBytes(message);
试试
把这个改成
Byte[] data =Encoding.ASCII.GetBytes(message);
或
Byte[] data =Encoding.UTF8.GetBytes(message);
试试
#19
楼主对于更加复杂的处理,那可以用socket
#20
问题解决了
Byte[] data =Encoding.Default.GetBytes(message);
谢谢大家的帮忙!!
Byte[] data =Encoding.Default.GetBytes(message);
谢谢大家的帮忙!!
#21
还是编码问题,哎
#22
解决了?结贴。
#23
jf
#24
汗……………………………………
又碰到一个不结贴的!
又碰到一个不结贴的!
#1
Byte[] data =Encoding.Unicode.GetBytes(message);
-----------------------------------------------------
Byte[] data =Encoding.Unicode.GetBytes(message.ToCharArray());
试试
-----------------------------------------------------
Byte[] data =Encoding.Unicode.GetBytes(message.ToCharArray());
试试
#2
GET .....
Host: ???
没有host头,http请求会失败
Host: ???
没有host头,http请求会失败
#3
Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
#4
GET /wzd24/index.html HTTP/1.1
Accept: */*
Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Data Center; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: 192.168.0.54:82
Connection: Keep-Alive
Cookie: visitorId=9d5222c74ffc4155b5d1f1dd265b326f
------------------------------------------------------------
这是一个比较完整的HTTP请求包。
其中
Get,Host是必须存在的。缺一不可。你少了HOST,当然会被返回400错误。
Accept: */*
Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Data Center; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: 192.168.0.54:82
Connection: Keep-Alive
Cookie: visitorId=9d5222c74ffc4155b5d1f1dd265b326f
------------------------------------------------------------
这是一个比较完整的HTTP请求包。
其中
Get,Host是必须存在的。缺一不可。你少了HOST,当然会被返回400错误。
#5
那错误就不在上面的代码了..
楼主贴出出错的地方...
楼主贴出出错的地方...
#6
牧兄早..
#7
回复hdt, wzd24 :
我在程序中添加了:
message += "Host:218.16.124.76:80 \n"; //www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
我在程序中添加了:
message += "Host:218.16.124.76:80 \n"; //www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
#8
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(new System.Uri(a_strUrl));
myReq.Method = "GET";
myReq.Accept = "*/*";
myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
程序里面可以这样...
myReq.Method = "GET";
myReq.Accept = "*/*";
myReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)";
程序里面可以这样...
#9
回浪客:
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
#10
xingxing810512(星星) ( ) 信誉:91 Blog 加为好友 2007-5-18 9:49:57 得分: 0
回复hdt, wzd24 :
我在程序中添加了:
message += "Host:218.16.124.76:80 \n";//www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
-------------------------------------------------------------
所面要跟\r\n而不只是一个\n。
---------------------------------------------------------------
To:zhangliu_521(浪客)
你也早啊!
呵呵………………
回复hdt, wzd24 :
我在程序中添加了:
message += "Host:218.16.124.76:80 \n";//www.lili.cc
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \n";
message += "Accept-Encoding: gzip, deflate \n";
message += "Connection: Keep-Alive\n\r";
测试结果仍然返回 400错误
我是使用代理上网的, 这会是问题吗?
-------------------------------------------------------------
所面要跟\r\n而不只是一个\n。
---------------------------------------------------------------
To:zhangliu_521(浪客)
你也早啊!
呵呵………………
#11
\n
====>
\r\n
====>
\r\n
#12
还有,最后还要跟一个空行。也就是说最后要是\r\n\r\n这样的!
#13
回浪客:
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
-----------------------------------------------------------------
HttpWebRequest myReq;
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
那我如何通过ns 来发送 这样一个已装封装好了的 HttpWebRequest
-----------------------------------------------------------------
HttpWebRequest myReq;
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
#14
回上:
程序修改如下:
String message = "";
message += "GET /club/garden.html HTTP/1.1 \r\n";
message += "Host:www.lili.cc \r\n";
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \r\n";
message += "Accept-Encoding: gzip, deflate \r\n";
message += "Connection: Keep-Alive\r\n\r\n";
完整的错误结果:
HTTP/1.1 400 Bad Request ( The data is invalid. )
Via: 1.1 PROXYCENT
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 1946
程序修改如下:
String message = "";
message += "GET /club/garden.html HTTP/1.1 \r\n";
message += "Host:www.lili.cc \r\n";
message += "Accept-Language: zh-cn,zh-TW;q=0.7,en-US;q=0.3 \r\n";
message += "Accept-Encoding: gzip, deflate \r\n";
message += "Connection: Keep-Alive\r\n\r\n";
完整的错误结果:
HTTP/1.1 400 Bad Request ( The data is invalid. )
Via: 1.1 PROXYCENT
Connection: close
Proxy-Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 1946
#15
sorry 你要ns发送...
我这是程序...
我这是程序...
#16
回浪客:
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
#17
回浪客:
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
----------------------------------------------------------------
我现在用的都是获取和设置..
自定义 LZ可以参考HttpwebRequest 类的详细资料.sorry没研究过
HttpwebRequest 中的方法可以自定义吗 例如 GetStock() .....
----------------------------------------------------------------
我现在用的都是获取和设置..
自定义 LZ可以参考HttpwebRequest 类的详细资料.sorry没研究过
#18
Byte[] data =Encoding.Unicode.GetBytes(message);
把这个改成
Byte[] data =Encoding.ASCII.GetBytes(message);
或
Byte[] data =Encoding.UTF8.GetBytes(message);
试试
把这个改成
Byte[] data =Encoding.ASCII.GetBytes(message);
或
Byte[] data =Encoding.UTF8.GetBytes(message);
试试
#19
楼主对于更加复杂的处理,那可以用socket
#20
问题解决了
Byte[] data =Encoding.Default.GetBytes(message);
谢谢大家的帮忙!!
Byte[] data =Encoding.Default.GetBytes(message);
谢谢大家的帮忙!!
#21
还是编码问题,哎
#22
解决了?结贴。
#23
jf
#24
汗……………………………………
又碰到一个不结贴的!
又碰到一个不结贴的!