【发布时间】:2011-11-17 03:07:02
【问题描述】:
我的应用程序从 php Web 服务器获取大部分数据。
我的问题是服务器返回错误时。 错误不是 HTML 页面,而是简单的字符串。 例如:
ERROR001
可能代表无效名称。
这是我的代码:
String responseBody = null;
URL url = new URL(strUrl);
URLConnection connection;
connection = url.openConnection();
connection.setUseCaches(false);
InputStream isResponse = (InputStream) connection.getContent(); // on errors I get IOException here
responseBody = convertStreamToString (isResponse);
当我使用它时,我在 connection.getContent(); 上得到 IOException;
我也试过了:
HttpGet getMethod = new HttpGet(url);
String responseBody = null;
responseBody = mClient.execute(getMethod,mResponseHandler); // on errors I getClientProtocolException
但我在 mClient.execute 上得到 getClientProtocolException
知道如何将 ERROR001 之类的结果读入字符串吗?
【问题讨论】:
-
我对 PHP 相当陌生,但是您检查过从服务器返回的响应代码吗?一般来说,这是判断您是否收到有效回复的可靠方法。
-
这实际上与 PHP 没有任何关系。有一个异常被抛出并且没有在客户端被处理。需要 try/catch 而不是试图解释错误的响应正文。
-
我刚刚注意到,当网页的响应为“OK”时,我没有收到任何错误。仅当结果为“ERRORXXX”形式时才会发生异常
-
我同意 Paul Sasik - 添加 try/catch 块并在该块内尝试读取您的响应。
-
当我在我的 PC 浏览器上尝试 URL 时,我得到“ERRORXXX”,这正是我希望在我的应用程序中得到的。相反,我得到了一个例外。我想在客户端(我这边)检查它,但在我阅读它之前我得到了异常。
标签: php android html http inputstream