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

我正在尝试在 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 并给出正确的响应。


我能从这里做什么?


慕慕森
浏览 330回答 1
1回答

慕工程0101907

当我测试您的代码片段时,它按预期工作。您确定 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"));}
打开App,查看更多内容
随时随地看视频慕课网APP