如何使用HttpPost发送的表单格式,在另一个程序使用WebRequest类接收
时间: 2024-09-08 10:03:44 浏览: 84
要使用`HttpPost`发送表单数据,并使用`WebRequest`类在另一个程序中接收,你可以按照以下步骤进行:
1. 创建一个发送端的C#程序,使用`HttpWebRequest`对象来创建一个POST请求。
2. 设置请求头(例如,指定内容类型为`application/x-www-form-urlencoded`)。
3. 构造表单数据并写入请求流。
4. 发送请求并读取响应。
以下是一个示例代码,展示如何发送POST请求:
```csharp
using System;
using System.IO;
using System.Net;
public class HttpPostSender
{
public static void SendHttpPostRequest(string url, string postData)
{
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// 创建 HttpWebRequest 对象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
// 将 POST 数据写入请求流
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
// 获取响应
WebResponse response = request.GetResponse();
using (Stream dataStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
}
}
}
```
在接收端程序中,你可以使用`HttpListener`或者`WebListener`(.NET Core中使用的类)来监听HTTP请求并读取表单数据:
```csharp
using System;
using System.IO;
using System.Net;
using System.Text;
public class HttpPostReceiver
{
public static void StartListening()
{
HttpListener listener = new HttpListener();
// 注意,URL必须以斜杠 '/' 结尾
listener.Prefixes.Add("http://localhost:8080/");
listener.Start();
Console.WriteLine("Listening...");
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
// 获取客户端发送的数据
string postBody = string.Empty;
using (Stream dataStream = request.InputStream)
{
using (StreamReader reader = new StreamReader(dataStream))
{
postBody = reader.ReadToEnd();
}
}
// 处理表单数据
Console.WriteLine("Received POST data:");
Console.WriteLine(postBody);
// 发送响应到客户端
string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
byte[] buffer = Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
using (Stream responseStream = response.OutputStream)
{
responseStream.Write(buffer, 0, buffer.Length);
}
response.Close();
}
}
```
在上面的接收端代码中,我们创建了一个`HttpListener`来监听指定前缀的URL。一旦接收到请求,我们读取请求的输入流以获取POST数据,然后输出这些数据。最后,我们向客户端发送一个简单的响应。