使用Socket发送HTTP请求的示例代码如下:
using System;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main()
{
// 创建Socket
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 连接服务器
clientSocket.Connect("example.com", 80);
// 构造HTTP请求报文
string request = "GET /api/data HTTP/1.1\r\n" +
"Host: example.com\r\n" +
"Connection: close\r\n" +
"\r\n";
// 发送HTTP请求
byte[] requestBytes = Encoding.ASCII.GetBytes(request);
clientSocket.Send(requestBytes);
// 接收服务器响应
byte[] buffer = new byte[1024];
int bytesRead;
StringBuilder response = new StringBuilder();
do
{
bytesRead = clientSocket.Receive(buffer);
response.Append(Encoding.ASCII.GetString(buffer, 0, bytesRead));
}
while (bytesRead > 0);
// 关闭Socket连接
clientSocket.Close();
// 输出服务器响应
Console.WriteLine(response.ToString());
}
}
上述代码创建了一个Socket对象,连接到指定的服务器和端口(例如80端口),构造了一个简单的GET请求报文并发送给服务器。然后从服务器接收响应数据,并将其打印到控制台上。
需要根据实际情况修改请求报文中的URL、主机和头信息等。
请注意,使用Socket发送HTTP请求相对比较底层,需要手动进行HTTP协议的构造和解析。在实际开发中,一般推荐使用更高层次的HttpClient或WebRequest类来发送HTTP请求,这些类提供了更方便和易用的API。