【发布时间】:2020-11-22 16:46:20
【问题描述】:
我正在尝试使用以下代码从 xamarin 表单应用程序中使用 REST API。但是由于某些奇怪的原因,我收到了无效的 URI 错误。我还尝试在 PostAsync 方法中使用绝对路径,但错误仍然存在。有人可以指导我吗?
HttpClient client = new HttpClient();
string baseAdd = @"http://localhost:9000/";
public async void GenerateAPIToken()
{
string tsResult = "";
try
{
Token token = new Token();
//GET TOKEN
client.BaseAddress = new Uri(baseAdd);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpRequestMessage msg = new HttpRequestMessage();
msg.Content = new StringContent(@"{""username"":""admin"",""password"":""admin123""}");
HttpResponseMessage response = await client.PostAsync(client.BaseAddress+"token/generate.php", msg.Content);
if (response.StatusCode == HttpStatusCode.OK)
{
HttpContent cnt = response.Content;
tsResult = await cnt.ReadAsStringAsync();
token = JsonConvert.DeserializeObject<Token>(tsResult);
App.apiToken = token.Document.AccessToken;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
【问题讨论】:
-
string baseAdd 具有以下值:localhost:9000 请参阅上面的代码,因为在 oomment 中它正在下拉斜杠和 Http 协议
-
client.BaseAddress+"token/generate.php"- BaseAddress 已被 HttpClient 添加。这意味着它将被添加两次。您可能还希望您的 BaseAddress 以http://或https://开头 -
@canton7 我试过只传递“token/generate.php”,并在 PostAsync 参数中提供了一个绝对 URL,但仍然是同样的错误。基地址包括协议 http:// 它只是出于某种原因从 stackoverflow 的推荐中删除
-
这能回答你的问题吗? Why is HttpClient BaseAddress not working?
标签: c#