下面我将为你详细讲解“C#通过GET/POST方式发送HTTP请求”的完整攻略。
1. 使用HttpWebRequest类发送GET请求
发送GET请求需要使用HttpWebRequest类。下面是发送GET请求的示例代码:
string url = "https://example.com/api/";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
上面的代码将向url
发送一个GET请求,并返回一个包含服务器返回信息的HttpWebResponse
对象。然后我们可以从这个对象中读取返回的内容。
2. 使用HttpWebRequest类发送POST请求
发送POST请求同样需要使用HttpWebRequest类,不过发送POST请求需要在请求中添加请求的参数。下面是发送POST请求的示例代码:
string url = "https://example.com/api/";
string postData = "param1=value1¶m2=value2"; //请求的参数
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postDataBytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(postDataBytes, 0, postDataBytes.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
上面的代码将向url
发送一个POST请求,并添加postData
作为请求参数。然后我们将请求参数转换为字节数组,设置请求的ContentType和ContentLength,使用GetRequestStream()
方法获取请求流并写入请求参数,接着发送请求并读取服务器返回的内容。
3. 示例1:使用C#发送GET请求
假设我们要向https://jsonplaceholder.typicode.com/posts/1
发送一个GET请求,返回以下内容:
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae..."
}
下面是发送GET请求的完整代码:
public async Task<string> Get(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}
}
}
string url = "https://jsonplaceholder.typicode.com/posts/1";
string responseString = await Get(url);
Console.WriteLine(responseString);
上面的代码中,我们定义了一个名为Get
的异步方法来发送GET请求并返回服务器的响应。然后我们调用这个方法来发送请求,最后将响应内容输出到控制台。
4. 示例2:使用C#发送POST请求
假设我们要向https://reqbin.com/echo/post/json
发送一个POST请求,并添加以下JSON格式的数据作为请求参数:
{
"name": "John",
"age": 30,
"city": "New York"
}
下面是发送POST请求的完整代码:
public async Task<string> Post(string url, string data)
{
byte[] postDataBytes = Encoding.UTF8.GetBytes(data);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = postDataBytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
await requestStream.WriteAsync(postDataBytes, 0, postDataBytes.Length);
}
using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
return await reader.ReadToEndAsync();
}
}
}
}
string url = "https://reqbin.com/echo/post/json";
string data = @"{
""name"": ""John"",
""age"": 30,
""city"": ""New York""
}";
string responseString = await Post(url, data);
Console.WriteLine(responseString);
上面的代码中,我们定义了一个名为Post
的异步方法来发送POST请求并返回服务器的响应。然后我们调用这个方法来发送请求,最后将响应内容输出到控制台。
以上就是使用C#发送HTTP请求的完整攻略,包括了使用HttpWebRequest
类发送GET/POST请求的示例代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#通过GET/POST方式发送Http请求 - Python技术站