C#HttpClient在POST请求期间截断URI

时间:2018-09-12 20:49:13

标签: c# rest uwp httpclient

我正在尝试在C#UWP应用中向特定端点发出POST请求。我得到的结果只是主页上的HTML。在查看请求时,我指定了整个端点,但是在发出请求时,它只是命中了主机(没有端点)。

我正试图发布至:http://ip-address/api/devices/logs URI正在发布到:http://ip-address

代码:

Uri requestUri = new Uri("http://ip-address/api/devices/logs");
var objClint = new System.Net.Http.HttpClient();
System.Net.Http.HttpResponseMessage respon = await objClint.PostAsync(requestUri , new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(text), System.Text.Encoding.UTF8, "application/json"));
string responJsonText = await respon.Content.ReadAsStringAsync();

我打算取回POST请求的结果(如创建的对象),但我只是从主页/登录页面获取HTML。

我尝试设置objClient的BaseAddress并仅通过端点的其余部分,将整个端点作为PostAsync中的参数,并添加UriKind.Absolute。 / p>

我真的不知道该怎么办。

如果我在相同的URI上运行GetAsync,它不会缩短请求URI并给出正确的响应。

我可以从这里做什么?

1 个答案:

答案 0 :(得分:0)

当我测试您的代码段时,它可以按预期工作。您确定在此路线上可以使用POST吗?代码可能不会截断URL,而返回只是重定向。我会先检查一下。

无论哪种方式,如果您想尝试另一种也可以起作用的方式,则这是使请求具有相同依赖性的另一种方式。

var baseUri = new Uri("http: //ip-address/");
var route = "/api/devices/logs";
using (var objClint = new HttpClient())
{
      objClint.BaseAddress = baseUri;
      var respon = await objClint.PostAsync(route, new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new { text = "text" }), System.Text.Encoding.UTF8, "application/json"));
}