【发布时间】:2018-12-16 20:26:28
【问题描述】:
我有一个从 webAPI 提取数据的 xamarin 应用程序。我检查了很多次api地址,我确信它是正确的。当我调试我的代码时,我有来自服务器的 404 not found 错误。但是,当我将 URL 复制并粘贴到浏览器时,我得到了预期的结果。我不知道为什么我的应用返回 404。
我的方法:
public async Task<ICustomerType> GetById(int id)
{
string _token;
if (App.Current.Properties.ContainsKey("token"))
{
_token = (string)App.Current.Properties["token"];
}
else
{ _token = null; }
var webApiResponse =
_connector.PostAsync(
"api/Customer/get/id/" + id,
string.Empty, _token).Result;
var response = webApiResponse.Result.ToString();
var jObjectResponse = JObject.Parse(response);
ICustomerType customerTypeObj = null;
return customerTypeObj;
}
我对 HttpClient 的 PostAsync 方法的桥接方法:
private async Task<TResponse> PostAsync(string requestPath, string
jsonContent, bool getToken, string token)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(_apiUrl);
client.DefaultRequestHeaders.Accept.Clear();
var contentType = new MediaTypeWithQualityHeaderValue("application/json");
client.DefaultRequestHeaders.Accept.Add(contentType);
if (getToken)
{
token = GetApiTokenAsync().Result;
}
if (!string.IsNullOrEmpty(token))
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
}
var httpContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
var response = client.PostAsync(requestPath, httpContent).Result;
var jsonData = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<TResponse>(jsonData);
}
令牌:正确
API Url:正确(我从调试输出中检查“/”符号。它们放置得很好。我的 Api 喜欢: https://MyApi.net/api/Personel/get/id/1)
我的错误:
- 响应 {状态代码:404,ReasonPhrase:'未找到',版本:1.1,内容:System.Net.Http.StreamContent,标头:{请求上下文: appId=cid-v1:Some_String 服务器:Kestrel
严格传输安全性:max-age=Some_Int 设置 Cookie: ARRAffinity=Some_String;Path=/;HttpOnly;Domain=MyDomain 日期:周一, 2018 年 7 月 9 日 07:54:19 GMT X-Powered-By:ASP.NET 内容长度:0 }} System.Net.Http.HttpResponseMessage
【问题讨论】:
标签: xamarin httpclient