0

PHP スクリプトにアクセスしているときに、次のエラーが発生します。

W/System.err: Error reading from ./org/apache/harmony/awt/www/content/text/html.class

問題のあるコード スニペットは次のとおりです。

URL url = "http://server.com/path/to/script"
is = (InputStream) url.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
}
is.close();

エラーは 2 行目にスローされます。エラーに関する Google 検索の結果は 0 でした。この警告は、アプリケーションのフローには影響せず、問題というより煩わしいものです。また、API 11 デバイスでのみ発生します (API 8 および 9 デバイスで正常に動作します)。

4

2 に答える 2

1

PHPスクリプトをクエリしている場合、URLを宣言してからInputStreamを取得しようとするのは正しい方法ではないと確信しています...

次のようなものを試してください:

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://someurl.com");

try {
// Execute HTTP Get Request
HttpResponse response = httpclient.execute(httpGet);

HttpEntity entity = response.getEntity();

if (entity != null) {

    InputStream instream = entity.getContent();
    String result = convertStreamToString(instream);

            // Do whatever with the data here


            // Close the stream when you're done
    instream.close();

    }
}
catch(Exception e) { }

ストリームを文字列に簡単に変換するには、次のメソッドを呼び出すだけです。

private static String convertStreamToString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}
于 2012-06-26T21:34:37.300 に答える
1

なぜ使用しないのHttpClientですか?私見、それは http 呼び出しを行うためのより良い方法です。使用方法はこちらでご確認ください。また、InputStream からの応答を読み取って車輪を再発明しないようにしてください。代わりにEntityUtilsを使用してください。

于 2012-06-26T21:43:51.793 に答える