我有一个奇怪的问题。从我的 android 应用程序中,我正在调用 ASP.NET Web API。我可以毫无问题地从应用程序发出 POST 请求。但是,当我发出 GET 请求时,请求返回“400 bad request invalid hostname”。这很奇怪,因为我可以发出 POST 请求,而不是 get。我使用的 URL 是http://10.0.2.2/webapp/api/controllername
(10.0.2.2,因为 android 模拟器使用 127.0.0.1;这是已发布的解决方法)。我确实启用了互联网权限。
我目前正在调试 Web API,并且可以调试发布请求。我可以在 Internet Explorer 中手动输入获取请求的 URL,然后点击服务器。这就是我知道它正在工作的方式。我有一个 application_beginrequest 处理程序,只是为了看到我什至正在访问服务器,它是用于发布请求的。但我什至从来没有看到一个获取请求进入服务器。
为了发出 Android GET 请求,我使用了以下内容(添加了带有附加信息的注释)。
//Creation of get request
HttpGet request = new HttpGet(url); //correct URL; verified
for(NameValuePair h : headers)
{
//6 headers added; verified OK
request.addHeader(h.getName(), h.getValue());
}
//Calls method shown below
return executeRequest(request, url);
private ResponseInformation executeRequest(HttpUriRequest request, String url) throws Exception
{
HttpClient client = new DefaultHttpClient();
HttpResponse httpResponse;
try {
//Get the response and check the code/message
httpResponse = client.execute(request);
responseCode = httpResponse.getStatusLine().getStatusCode();
message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntity entity = httpResponse.getEntity();
ResponseInformation info; // just a DTO for my needs
if (entity != null) {
InputStream instream = entity.getContent();
//Response is an XML document listing the 400 error information
response = convertStreamToString(instream);
info = new ResponseInformation(responseCode, response, message);
instream.close();
}
else
info = new ResponseInformation(responseCode, message);
return info;
}
.
.
}
所以我不确定是谁在拒绝?为什么我会收到此错误?它永远不会命中 Application_BeginRequest 所以它永远不会进入我的 Web API 服务,但是 POSTS 确实......太奇怪了。