【发布时间】:2018-07-06 15:16:27
【问题描述】:
我正在用 PHP 开发一个 API,我在其中返回一个 json 文件,我在邮递员中执行测试,它与 url 完美配合
http://localhost:80/bdevApi/api/index/keyacessoUbasd42123/CategoriaExame
还给我
{
"code": "200",
"result": true,
"message": "",
"data": {
"item": [
{
"id": "5",
"descricao": "TesteDesc",
"observacao": "TesteObs",
"status": "1"
},
{
"id": "7",
"descricao": "TesteDesc",
"observacao": "TesteObs",
"status": "1"
},
],
"count": 15
}
}
现在我想在使用 WPF 的 C# 应用程序中接收此信息。我已经导入了客户端
public partial class MainWindow : Window
{
HttpClient client = new HttpClient();
public MainWindow()
{
InitializeComponent();
client.BaseAddress = new Uri("http://localhost:80");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
this.Loaded += MainWindow_Loaded;
getStatusContent();
getCategorias();
}
async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
try
{
HttpResponseMessage response = await client.GetAsync("/bdevApi/api/index/keyacessoUbasd42123/CategoriaExame");
response.EnsureSuccessStatusCode(); // Lança um código de erro
var getData = await response.Content.ReadAsAsync<IEnumerable<Categoria>>();
}
catch (Exception ex)
{
MessageBox.Show("Erro : " + ex.Message);
}
}
}
我想接收信息并在我的 var getData 中检索它,但是它正在加载错误
响应状态码不表示成功:406不可接受
我已经在 url 中尝试了一些修改但我没有成功。问题出在网址上?
【问题讨论】:
-
你能调试你正在访问的api吗?并尝试删除 DefaultHeader (或者您是否也使用邮递员发送过?) 406 表示服务器无法满足您请求的答案格式...可能服务器上未正确处理 Accept Header,邮递员可能不会发送它,因此不会触发问题
-
请注意,HttpClient 对基地址和请求路径有点迂腐。 (尽管我认为这不是问题所在)。为了安全起见(尤其是在将部分路径添加到基地址并使用相对请求路径时)您必须在基地址的末尾添加
/并且不得 在请求路径的开头添加一个/(stackoverflow.com/questions/23438416/…) -
我没有定义邮递员,我会删除它。我通过url将访问密钥传递给我的api,你认为这有什么问题吗?
-
如果它与您在邮递员中使用的网址完全相同,那应该不是问题。但是您应该尝试像在邮递员中那样发送完全相同的请求。即没有额外的标题,...
-
这是标题的问题。感谢您的帮助
标签: c# api http httpclient