C# 如何发送正确的HTTP请求?
我有一个现成的链接,将发送短信到用户的电话和OTP 但是,我正在使用这种方式,我想知道是否有更好的方式发送请求。还有,如何确保我得到了200 OK的回复C# 如何发送正确的HTTP请求?,c#,asp.net,asp.net-mvc,http,request,C#,Asp.net,Asp.net Mvc,Http,Request,我有一个现成的链接,将发送短信到用户的电话和OTP 但是,我正在使用这种方式,我想知道是否有更好的方式发送请求。还有,如何确保我得到了200 OK的回复 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); response.Close(); 您可以使用HttpClient 例如: p
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
response.Close();
您可以使用HttpClient 例如:
public class Client
{
HttpClient _httpClient;
public Client()
{
_httpClient=new HttpClient();
}
//async post,get request
public async Task<string> sendGetRequest(string url)
{
var response= await _httpClient.GetAsync(url);
if(response.IsSuccessStatusCode)
{
//if response has status code 200 do something
//in this case I'm just converting the content of the response in string format
string result=await response.Content.ReadStringAsync();
}
else
{
return "error";
}
}
public async Task<string> sendPostRequest(string url,string bodyJson)
{
//Example sending a post request with json as body.
var body=new StringContent(bodyJson, Encoding.UTF8, "application/json");
var response= await _httpClient.PostAsync(url,body);
if(response.IsSuccessStatusCode)
{
//if response has status code 200 do something
//in this case I'm just converting the contntent of the response in string format
string result=await response.Content.ReadStringAsync();
return result;
}
else
{
return "error";
}
}
}
公共类客户端
{
HttpClient HttpClient;
公共客户机()
{
_httpClient=新的httpClient();
}
//异步post、get请求
公共异步任务sendGetRequest(字符串url)
{
var response=await\u httpClient.GetAsync(url);
if(响应。IsSuccessStatusCode)
{
//如果响应的状态代码为200,请执行某些操作
//在本例中,我只是将响应的内容转换为字符串格式
字符串结果=wait response.Content.ReadStringAsync();
}
其他的
{
返回“错误”;
}
}
公共异步任务sendPostRequest(字符串url、字符串bodyJson)
{
//以json作为主体发送post请求的示例。
var body=newstringcontent(bodyJson,Encoding.UTF8,“application/json”);
var response=wait_httpClient.PostAsync(url,body);
if(响应。IsSuccessStatusCode)
{
//如果响应的状态代码为200,请执行某些操作
//在本例中,我只是将响应的内容转换为字符串格式
字符串结果=wait response.Content.ReadStringAsync();
返回结果;
}
其他的
{
返回“错误”;
}
}
}
什么是“OTP”?更好的方法是使用HttpClient,尤其是在.NET核心和即将推出的.NET 5中。为了确保得到200条回复,只需检查回复的状态。嘿@UweKeim,感谢您的快速回复。OTP代表一次性密码。“只是为了检查是否有更好的实践”使用HttpClient(正确!)是更好的实践。我已经回答了这个问题。正确使用HttpClient-这意味着使用异步代码而不是阻塞,检查响应状态代码等。同步HTTP调用会无缘无故阻塞线程,因为机器正在等待另一台机器的响应。阻塞并不意味着CPU没有使用,恰恰相反。将线程置于睡眠状态并重新调度是非常昂贵的,因此.NET在重新调度被阻止的线程之前先尝试spinwait。这意味着阻塞会导致更多的CPU使用亲爱的,非常感谢您的分享。它好多了,而且真的很有用!