Android 网络服务调用抛出 org.apache.http.NoHttpResponseException
Android web service call throws org.apache.http.NoHttpResponseException
我做了什么:
我尝试使用以下代码从我的 android 应用中通过 "POST" 方法调用 Web 服务。
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://myserver.com:5060/convert/service");
try {
File file = new File(inputPath);
httppost.setHeader("Content-Type", "application/msword");
httppost.setHeader("Accept", "application/pdf");
httppost.setEntity(new ByteArrayEntity(readFile(file)));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (Exception e) {
e.printStackTrace();
}
当我执行此 api 调用时,出现以下异常。
"org.apache.http.NoHttpResponseException: The target server failed to
respond"
但是当我使用 same 从 standalone java 项目 调用 same web service 时代码,我得到正确的响应。
没有收到上述任何错误。
我想要什么:
根据我的 java 网络服务调用,我知道服务和源代码都没有问题.那么可能是什么问题?我怎样才能摆脱这个问题?
我已经解决了这个问题。
问题是因为 端口号 5060。我确实通过在 eclipse 中使用 TCP/IP monitor 工具找到了这个。
默认情况下 5060 端口 不会从 android 调用(我不知道原因)。因为请求没有命中服务器。
所以我在我的服务器中将 端口号更改为 8090 并重新启动了服务器。
然后我调用了 android 的服务。现在效果很好。
我做了什么:
我尝试使用以下代码从我的 android 应用中通过 "POST" 方法调用 Web 服务。
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://myserver.com:5060/convert/service");
try {
File file = new File(inputPath);
httppost.setHeader("Content-Type", "application/msword");
httppost.setHeader("Accept", "application/pdf");
httppost.setEntity(new ByteArrayEntity(readFile(file)));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
} catch (Exception e) {
e.printStackTrace();
}
当我执行此 api 调用时,出现以下异常。
"org.apache.http.NoHttpResponseException: The target server failed to respond"
但是当我使用 same 从 standalone java 项目 调用 same web service 时代码,我得到正确的响应。
没有收到上述任何错误。
我想要什么:
根据我的 java 网络服务调用,我知道服务和源代码都没有问题.那么可能是什么问题?我怎样才能摆脱这个问题?
我已经解决了这个问题。
问题是因为 端口号 5060。我确实通过在 eclipse 中使用 TCP/IP monitor 工具找到了这个。
默认情况下 5060 端口 不会从 android 调用(我不知道原因)。因为请求没有命中服务器。
所以我在我的服务器中将 端口号更改为 8090 并重新启动了服务器。
然后我调用了 android 的服务。现在效果很好。