【发布时间】:2018-07-03 13:30:49
【问题描述】:
我有一个 api
http://cbastest.cadvilpos.com/module/posmodule/customapi
带参数
{
"action":4,
"device_token": "3e8ea119a90ee6d2",
"key":"9475962085b3a1b8c475d52.95782804",
"shop":1,
"language":1
}
这在邮递员中运行良好。但是当我尝试从 c# 项目连接时,它显示错误{"success":0,"error":"Missing the action parameter."}。请提供一个有效的 C# 代码来获取 json 结果。
我试过的代码:
var request = (HttpWebRequest)WebRequest.Create("http://cbastest.cadvilpos.com/module/posmodule/customapi");
var postData = "{ 'action':'4', 'device_token':'3e8ea119a90ee6d2','key':'9475962085b3a1b8c475d52.95782804','shop':'1','language':'1'}";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response2 = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response2.GetResponseStream()).ReadToEnd();
【问题讨论】:
-
你能分享一下你的 C# Action 的代码是怎样的吗?
-
您不需要需要使用原始 HttpWebRequest 对象来进行 HTTP 调用。检查重复,调用
var content=new StringContent(postData,Encoding.UTF8, "application/json");var response=await httpClient.PostAsync(url,content);只需2行。如果您不手动构造 JSON 字符串但使用例如 JSON.NET 序列化强类型对象,则为 3 行。 -
如果您使用Microsoft.AspNet.WebApi.Client 中的
PostAsJsonAsync扩展方法,则只有一行。别管名字,这个包在 HttpClient 之上添加了格式化方法。它不是特定于 ASP.NET Web API
标签: c# api asp.net-web-api postman