【发布时间】:2017-02-23 15:07:53
【问题描述】:
我正在编写一个通过 REST API 读取和发送数据的 WP8.1 应用程序。 除了“搜索”之外,它们都可以正常工作。
这个 API 在 POST 中工作,我需要发送一个 Json 格式的字符串来定义我的查询。如果我只设置了几个过滤器,REST API 响应时间就会太长。因此,HttpResponseMessage 对象没有成功代码,它返回“NotFound”消息,即使 Web API 正在正确运行。
如果我通过 Postman 尝试相同的请求,它可以正常工作,但如果我通过 SoapUi 尝试,我会收到“java.net.SocketTimeoutException: Read timed out”错误消息。
在 SoapUi 中,我设法延长超时时间以获得响应,但即使我将 TimeOut 属性设置为 HttpClient 对象,我的 C# 代码仍然无法工作。
有人可以帮我解决我的问题吗? 谢谢!
编辑 代码很简单:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.ExpectContinue = false;
client.Timeout = TimeSpan.FromSeconds(300);
HttpContent content = new StringContent(json, Encoding.Unicode, "application/json");
HttpResponseMessage response = await client.PostAsync(uri, content));
if (response.IsSuccessStatusCode)
{
string jsonResponse = await response.Content.ReadAsStringAsync();
}
【问题讨论】:
-
您需要提供有关您在做什么的更多详细信息(例如一段代码),否则将很难知道可能是什么问题
-
@ElmerDantas 代码已添加
-
尝试使用
new StringContent(json.ToString(), Encoding.UTF8, "application/json");..也尝试使用client.BaseAddress = new Uri(baseAddress)和client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));属性。 -
我发布的代码是一些测试的结果:起始代码与您建议的相同,带有 Encoding.UTF8 且没有 ExpectContinue 属性。
-
我明白了...我注意到另一件事...在您的
PostAsync中,您使用的是uri不是baseAddress(或正确的url)吗?
标签: c# rest web windows-phone-8