【接口】-请求WebApi的2种方式
来源:互联网 发布:oracle数据库代理商 编辑:程序博客网 时间:2024/04/28 00:02
方式一:通过后台访问api,可以使用HttpClient的方式也可以使用WebRequest的方式
1、HttpClient的方式
(1)Get请求
string url = "http://10.1.1.1:8080/";
public ActionResult GetAll()
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("api/goods/getlist?pageindex=0&pagesize=10").Result; // Blocking call(阻塞调用)!
var result = "";
if (response.IsSuccessStatusCode)
{
result = response.Content.ReadAsStringAsync().Result;
JavaScriptSerializer Serializer = new JavaScriptSerializer();
var items = Serializer.DeserializeObject(result);
return Json(items);
}
else
{
return Json(result);
}
}
(2)Post请求
[HttpPost]
public ActionResult AddGood(string paramObj)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
JavaScriptSerializer jss = new JavaScriptSerializer();
var item = jss.Deserialize<Good>(paramObj);
var content = new FormUrlEncodedContent(new Dictionary<string, string>()
{
{"Id","382accff-57b2-4d6e-ae84-a61e00a3e3b5"},
{"Category","111"}
});
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsync("api/goods/add", content).Result;
var result = "";
if (response.IsSuccessStatusCode)
{
result = response.Content.ReadAsStringAsync().Result;
JavaScriptSerializer Serializer = new JavaScriptSerializer();
var items = Serializer.DeserializeObject(result);
return Json(items);
}
return View();
}
2、WebRequest的方式(该方式是post请求的时候传入json字符串转换成流的形式,无需再将json转换成需要的实体对象了),所以这种方式只需写一个公共的方法,每次调用的时候传入地址和参数即可
公共方法如下:public class WebRequestHelper
{
public static string GetRequest(string url)
{
string responseStr = string.Empty;
WebRequest request = WebRequest.Create(url);
request.Method = "Get";
var response = request.GetResponse();
Stream ReceiveStream = response.GetResponseStream();
using (StreamReader stream = new StreamReader(ReceiveStream, Encoding.UTF8))
{
responseStr = stream.ReadToEnd();
}
return responseStr;
}
public static string PostRequest(string url, string postParameter)
{
string responseStr = string.Empty;
WebRequest request = WebRequest.Create(url);
request.Method = "Post";
request.ContentType = "application/json";
byte[] requestData = System.Text.Encoding.UTF8.GetBytes(postParameter);
request.ContentLength = requestData.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(requestData, 0, requestData.Length);
newStream.Close();
var response = request.GetResponse();
Stream ReceiveStream = response.GetResponseStream();
using (StreamReader stream = new StreamReader(ReceiveStream, Encoding.UTF8))
{
responseStr = stream.ReadToEnd();
}
return responseStr;
}
/// <summary>
/// Http的 WebRequest的特定实现
/// </summary>
/// <param name="Url"></param>
/// <param name="JSONData"></param>
/// <returns></returns>
public static string GetResponseData(string Url, string JSONData)
{
byte[] bytes = Encoding.UTF8.GetBytes(JSONData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentLength = bytes.Length;
request.ContentType = "application/json";
Stream reqstream = request.GetRequestStream();
reqstream.Write(bytes, 0, bytes.Length);
//声明一个HttpWebRequest请求
request.Timeout = 90000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.UTF8;
StreamReader streamReader = new StreamReader(streamReceive, encoding);
string strResult = streamReader.ReadToEnd();
streamReceive.Dispose();
streamReader.Dispose();
return strResult;
}
}
调用的使用方法
(1)Get请求
public ActionResult GetAll()
{
string result = WebRequestHelper.GetRequest(url + "api/goods/getlist?pageindex=0&pagesize=10");
JavaScriptSerializer Serializer = new JavaScriptSerializer();
var items = Serializer.DeserializeObject(result);
return Json(items);
}
(2)Post请求
[HttpPost]
public ActionResult AddGood(string paramObj)
{
string result = WebRequestHelper.PostRequest(url + "api/goods/add", paramObj);
JavaScriptSerializer Serializer = new JavaScriptSerializer();
var items = Serializer.DeserializeObject(result);
return Json(items);
}
方式二:通过js 直接访问api接口,页面通过jquery调用
$.ajax({
type: "get",
url: "/goods/getall",
dataType: "json",
data: null,
//data: JSON.stringify({
// id: "382accff-57b2-4d6e-ae84-a61e00a3e3b6"
//}),
contentType: "application/json;charset-utf-8",
success: function (data) {
console.log(data);
}
});
var paramObj = { Id: "382accff-57b2-4d6e-ae84-a61e00a3e3b8",Category:111};
$.ajax({
type: "post",
url: "/goods/AddGood",
dataType: "json",
//data: null,
data: JSON.stringify({
paramObj: JSON.stringify(paramObj)
}),
contentType: "application/json;charset-utf-8",
success: function (data) {
console.log(data);
}
});
- 【接口】-请求WebApi的2种方式
- WebAPI GET和POST请求的几种方式
- WebAPI GET和POST请求的几种方式
- Jquery Ajax请求WebApi(Post请求方式)
- WebApi的几种寄宿方式
- webapi上传图片的两种方式
- webapi上传图片的两种方式
- [整理]各种各样的WebAPI接口
- 访问Http接口的两种请求方式
- WebAPI请求
- WebApi接口
- WebApi接口
- WebApi接口
- webapi的form格式请求的问题
- webapi的post和get请求总结
- WebApi系列~基于单请求封装多请求的设计
- mvc4中的 webapi 的使用方式
- Mvc4中的WebApi的使用方式
- js 获取select标签的选中值
- 浅析面对对象 六大原则(五)
- java string类型xml解析为对象
- gdb调试
- 杭电2030汉字统计
- 【接口】-请求WebApi的2种方式
- iOS开发之pod的版本回退
- 正则表达式的快速学习和使用(基础)
- C/C++内存泄漏检测
- 微信jssdk领取卡券
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- 厉 害 了!'我的' TP5 !!!
- 多态的作用
- Linux笔记 程序调试gdb