.net core web api 的使用
参考了这两位老哥的:感谢老哥的Get请求
其次就是下方这个视频。
一、准备好我们自己写好的Api(如何写api推荐给大家一个视频教程api2.1开发)事后我也会自己写篇博客,但是内容与视频内容差不多。
二、先来写post方法的公共类,到时候我们需要直接调用它就完事了。
/// <summary>
/// Post请求方法
/// </summary>
/// <param name="url">请求的路径</param>
/// <param name="postData">用户传入的数据(json格式也可以是字符串)</param>
/// <returns></returns>
public static string Post(string url,string postData)
{
//创建一个请求:指明需要请求到那个url
HttpWebRequest request =(HttpWebRequest)WebRequest.Create(url);
//请求时数据内容用什么类型发送(application/json)
request.ContentType = "application/json";
//请求的方法(Post,get)
request.Method = "POST";
//超时时长
request.Timeout = 10000;
//post 需要将参数进行编码为utf-8格式
byte[] bytes = Encoding.UTF8.GetBytes(postData);
request.ContentLength = bytes.Length;
Stream writer = request.GetRequestStream();
writer.Write(bytes,0,bytes.Length);
writer.Close();
//throw new InvalidOperationException()抛出无效操作异常(我上面已经try catch了可以不用)
HttpWebResponse response =(HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream()?? throw new InvalidOperationException(),Encoding.UTF8);
string result = reader.ReadToEnd();
reader.Close();
return result;
}
自己写的Post方法调用:
#region Post请求
/*
//请求api 的地址
string url = "http://localhost:52867/book/add";
//用户发过来的数据
AddRequest addRequest = new AddRequest
{
ISBN = "2",
name = "1",
authors = null,
price = "1",
};
//将对象转换为json字符串
string res_str = JsonConvert.SerializeObject(addRequest);
Console.WriteLine($"[请求时的数据:]{res_str}");
//调用post请求的方法,发起请求并接受返回的值
string result = Post(url, res_str);
Console.WriteLine($"[返回时的数据:]{result}");
*/
#endregion
三、Get方法:
/// <summary>
/// Get请求方法
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static string Get(string url)
{
//首先创建一个httpRequest,用Webrequest.Create(url)的方法
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
//初始化httpRequest,申明用的GET方法请求http
httpRequest.Timeout = 2000;
httpRequest.Method = "GET";
//创建一个httpResponse,存放服务器返回信息
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
StreamReader sr = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.UTF8);
//页面读完了,result接收结果
string result = sr.ReadToEnd();
//一个新字符串,其中当前实例中出现的所有指定字符串都替换为另一个指定的字符串 Replace(string oldValue,string newValue)
//result = result.Replace("\r", "").Replace("\n", "").Replace("\t", "");
//请求状态的反馈
//int status = (int)httpResponse.StatusCode;
sr.Close();
Console.WriteLine(result);
return result;
}
调用:
#region Get请求
string URL = "https://localhost:44330/actionapi/Comm/byIdGetComm?id=1&content=公牛牛皮";
string rep = Get(URL);
Console.WriteLine(rep);
#endregion
**总结:**大概就这么用,大家其实可以对比一下Post与Get方法处理处理响应数据时的区别,无非就时编码的那一块,Post请求可能会导致传入的参数乱码,所以要先处理乱码,在传值,Get请求在路径后面传参,一般不会乱码,我觉得是这个原因,如果有知道的老哥望告知,有什么不对的地方也欢迎指点。感谢。。。