C# httpwebrequest
时间: 2025-01-07 20:09:57 浏览: 6
### C# 中使用 `HttpWebRequest` 的基本方法
在 C# 中,`HttpWebRequest` 类用于创建 HTTP 请求并获取响应。下面是一个简单的例子来展示如何利用此类向指定 URL 发送 GET 请求,并读取返回的数据[^1]。
```csharp
using System;
using System.IO;
using System.Net;
class Program {
static void Main() {
string TokenUrl = "http://example.com/api/token"; // 假设这是目标API地址
try {
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(TokenUrl);
using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
using(StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8)) {
string jsonResponse = reader.ReadToEnd();
Console.WriteLine(jsonResponse); // 输出服务器响应内容
}
}
} catch(WebException ex) {
Console.WriteLine($"Error occurred: {ex.Message}");
}
}
}
```
这段代码展示了如何构建一个针对特定 API 地址的请求对象 (`HttpWebRequest`) 并发送它以获得相应的回复流(`HttpWebResponse`). 接着通过 `StreamReader` 来解析这个二进制数据流成字符串形式以便进一步处理或显示出来.
对于更复杂的场景比如 POST 请求或者需要设置自定义头部信息的情况, 可以按照如下方式调整:
#### 设置请求头和参数
当发起带有额外配置项(如 Content-Type 或者 Authorization headers)以及 body 参数(post data)时可以这样做:
```csharp
// 创建POST请求实例
var postReq = (HttpWebRequest)WebRequest.Create("http://api.example.com/post");
postReq.Method = "POST";
postReq.ContentType = "application/json";
string postData = "{\"key\":\"value\"}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// 将字节数组写入请求体中
using(var writer = postReq.GetRequestStream()){
await writer.WriteAsync(byteArray, 0, byteArray.Length);
}
try{
var httpResponse = (HttpWebResponse)await postReq.GetResponseAsync();
using(var streamReader = new StreamReader(httpResponse.GetResponseStream())){
var result = await streamReader.ReadToEndAsync();
Console.WriteLine(result);
}
}catch(Exception e){
Console.WriteLine(e.ToString());
}
```
上述片段说明了怎样构造 JSON 格式的 POST 数据包并通过异步调用来提高性能效率[^2].
阅读全文