C# 调用httpClient.PostAsync返回null
我试图调用一个api,实习生可以调用外部api来获取数据。我写的代码是:C# 调用httpClient.PostAsync返回null,c#,.net,api,C#,.net,Api,我试图调用一个api,实习生可以调用外部api来获取数据。我写的代码是: [HttpPost] public IHttpActionResult Post() { string _endpoint = "https://someurl.com/api/v1/models?auth_token=mytoken"; var httpContext = (System.Web.HttpContextWrapper)Request.Propert
[HttpPost]
public IHttpActionResult Post()
{
string _endpoint = "https://someurl.com/api/v1/models?auth_token=mytoken";
var httpContext = (System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"];
string upload_id = httpContext.Request.Form["upload_id"];
string filename = httpContext.Request.Form["filename"];
string filesize = "1000";
//return this.Ok<string>(upload_id + " " + filename);
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("upload_id", upload_id),
new KeyValuePair<string, string>("filename", filename),
new KeyValuePair<string, string>("filesize", filesize)
});
using (var httpClient = new HttpClient())
{
var response = httpClient.PostAsync(_endpoint, content).Result;
return Json(JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result));
}
}
但是,它总是返回null。我已经验证了API调用的工作原理,并且一切都是正确的。我对C#有点陌生。将代码分解,这样您就可以看到从
PostAsync
返回的Task
对象在说什么
var responseTask = httpClient.PostAsync(_endpoint, content);
var response = responseTask.Result;
// At this point you can query the properties of 'responseTask' to look for exceptions, etc.
请看传入参数“File”的ajax调用,但在C#中,您要查找的是“Filename” 修复了ajax代码:
$.ajax({ url: '/api/tws',
type: 'POST',
data: { 'filename': "EX-IGES.IGS", 'upload_id': "eb550576d2" },
success: function (response) { console.log('response',response); }
});
@JohnSanders
HttpClient
仅为HTTP方法提供…Async()
方法将代码拆分为显式语句,并使用调试器查看哪个调用没有返回您期望的结果。奇怪。。。应该由于超时而失败(您使用.Result
锁定了请求线程)。请使用Fiddler检查服务器实际返回的内容。请尝试在此行添加断点:var response=httpClient.PostAsync(_endpoint,content).Result;之后,在即时窗口中键入:httpClient.PostAsync(_endpoint,content)只需将该函数复制到表单中并使用该函数进行调试..谢谢。。事实上,我是用小提琴手发现的。我输入了错误的字段标签。噢!我们都忽略了这个简单的可能性是的。。你觉得我感觉如何。。。我整天都在看这个。我是PHP和Javascript的大师,所以我认为是我对C语言的陌生阻碍了事情的发展。我只是在等着看是否有人给出一个答案,指出“文件”或“文件名”的区别。如果没有,我会将这个标记为正确的
$.ajax({ url: '/api/tws',
type: 'POST',
data: { 'filename': "EX-IGES.IGS", 'upload_id': "eb550576d2" },
success: function (response) { console.log('response',response); }
});