[英]HTTP Post Request from C# to Flask REST API won't attach any parameters?
我一直在尝试对基本的Flask API做一个简单的POST请求,无论我尝试什么,它都会执行http://localhost:5000/
而不是我想要的http://localhost/?test_key=test_value
它要做。 C#不是我最强的语言,但我尝试了一些我在网上找到的不同方法。 我不认为这与我的方法在这一点上不好有关,我更认为我完全错过了一个重要的部分。
这是我尝试过的最新尝试(请记住,这是一个更大的项目的片段,但它不涉及任何其他部分):
class DisputeResponse
{
public int id;
public string res;
public string test_key;
}
[HttpPost]
public async Task<JsonResult> TestResponse(int id, string res)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:5000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var dispRes = new DisputeResponse();
dispRes.test_key = "test_value";
var result = await client.PostAsync("http://localhost:5000/",
new StringContent(JsonConvert.SerializeObject(dispRes), Encoding.UTF8, "application/json"
));
result.EnsureSuccessStatusCode();
}
catch (Exception e)
{
System.Diagnostics.Trace.TraceInformation(e.Message);
}
return null;
}
这是我使用Postman时的输出(完美地工作):
127.0.0.1 - - [15/Apr/2019 16:26:28] "POST /?test_key=test_value HTTP/1.1" 200 -
这是我尝试使用C#代码的时候:
127.0.0.1 - - [15/Apr/2019 16:36:54] "POST / HTTP/1.1" 500 -
编辑:对不起,我删除了一些无关的行。
HTTPClient将参数放在请求正文中。 如果要将其添加到URI,可以通过修改URI字符串来实现。 如果您没有向正文发布任何内容,我会修改FLASK API以接收GET而不是POST。
通常我只会在HTTP字符串请求的URI字符串中使用查询字符串参数,即使没有规则阻止您使用HTTPPost执行此操作。 另外,我只会在正文中包含我的HTTPPost请求参数。 再说一次,没有这个规则,只是我做的事情。
以下是一些帮助您使用HTTPClient post async方法的示例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.