为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕慕森 2022-01-15 15:39:22
我正在尝试在 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。我已经尝试设置BaseAddressobjClient 并仅通过端点的其余部分,将整个端点作为 in 中的参数传递PostAsync,然后添加UriKind.Absolute.我真的不知道从这里做什么。如果我GetAsync在同一个 URI 上运行,它不会缩短请求 URI 并给出正确的响应。我能从这里做什么?
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

当我测试您的代码片段时,它按预期工作。您确定 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"));

}


查看完整回答
反对 回复 2022-01-15
  • 1 回答
  • 0 关注
  • 329 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信