【发布时间】:2020-08-09 14:21:41
【问题描述】:
今天早上我遇到了一个问题,我调用的 Api 是一个 Get 方法,但要从中获取数据,我必须发送 json 正文,这在我在邮递员中测试时效果很好,但是我无法在我使用 HttpClient 调用它的项目中实现它
这是帖子的截图
它还有一个我在授权中传递的不记名令牌
现在,当我尝试在客户端实现此功能时,这是我的代码
var stringPayload = JsonConvert.SerializeObject(json);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://myapiendpoint/serviceability/"),
Content = new StringContent(stringPayload, Encoding.UTF8, "application/json"),
};
var response = await client.SendAsync(request).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
当我使用此代码调用此方法时,我得到
System.Net.HttpStatusCode.MethodNotAllowed - Status code 405
我也试过改变这一行
Method = HttpMethod.Get to Method = HttpMethod.Post
但仍然出现同样的错误
我知道这是在 API 端的错误实现,理想情况下,请求应该是 POST,但我无法更改它,因此需要找到解决方案
【问题讨论】:
-
oof,您也许可以使用 tcp 来代替。你也可以试试 WebClient。
-
@John 我正在尝试在我的 Xamarin 项目中实现这一点
-
WebClient 在我的 Xamarin 项目中为我工作。您也可以尝试 WebClient.UploadData。您还确定 application/json 是正确的格式吗?它可能只是文本而不是 json,这就是服务器拒绝你的原因。
-
HttpClient 不适用于带有正文的 GET 请求。
标签: c# xamarin .net-core xamarin.forms httpclient