C# 如何使用套接字发送GET请求?
我想用套接字发送GET/POST请求,我有以下代码:C# 如何使用套接字发送GET请求?,c#,sockets,get,request,send,C#,Sockets,Get,Request,Send,我想用套接字发送GET/POST请求,我有以下代码: Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(Url, 80); byte[] contentLenght = Encoding.ASCII.GetBytes(Data); string[] masRequestString ={ "GET /"+Data+" HTT
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(Url, 80);
byte[] contentLenght = Encoding.ASCII.GetBytes(Data);
string[] masRequestString ={
"GET /"+Data+" HTTP/1.1\r\n" ,
"Host: "+Url+"\r\n",
"User-Agent: "+textBox1.Text+"\r\n",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n",
"Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n",
"Referer: "+textBox2.Text+"\r\n"};
string request = string.Concat(masRequestString);
Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
socket.Send(bytesSent, bytesSent.Length, 0);
Byte[] bytesReceived = new Byte[0x400];
int bytes = socket.Receive(bytesReceived, bytesReceived.Length, 0);
string content = Encoding.ASCII.GetString(bytesReceived, 0, bytes);
当我试图发送请求时,嗅探器没有看到它。为什么?不要尝试自己实现HTTP,socket可以获取数据并包装它。 使用HTTP库:
using System.Net;
string url = "https://www.example.com/scriptname.php?var1=hello";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
不要尝试自己实现HTTP,socket可以获取数据并包装它。 使用HTTP库:
using System.Net;
string url = "https://www.example.com/scriptname.php?var1=hello";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
我不知道你是怎么嗅的但是
- 您没有发送正确的请求,因为它在最后错过了一个
\r\n
- 您希望服务器在响应完成后关闭连接。相反,您需要关心
标题和分块编码内容长度
- 除此之外,发送带有GET请求的
头没有意义,因为GET请求内部不会发送任何内容(仅在响应中)内容类型
我建议您在尝试实现HTTP之前,首先对它有更深入的了解。当然,更好的做法是使用现有的实现,因为HTTP并不是简单的协议,只是看了一眼就知道了。我不知道如何进行嗅探,但是
- 您没有发送正确的请求,因为它在最后错过了一个
\r\n
- 您希望服务器在响应完成后关闭连接。相反,您需要关心
标题和分块编码内容长度
- 除此之外,发送带有GET请求的
头没有意义,因为GET请求内部不会发送任何内容(仅在响应中)内容类型