2

ユーザーが入力したWebサイトから文字列でHTMLソースを取得しようとしています。これまでのコードは、次のようになっています。

public String getURLContent(String url)
{
    try 
    {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        ResponseHandler<String> resHandler = new BasicResponseHandler();
        String page = httpClient.execute(httpGet, resHandler);
        return page;
    }
    catch (ClientProtocolException e)
    {
        e.printStackTrace();
        return "";
    }
    catch (IOException e)
    {
        e.printStackTrace();
        return "";
    }
}

これを実行しようとするたびに、2番目のキャッチ(IOException)が発生します。これは、ドキュメントによると、サーバーが有効な応答を提供できなかったことを意味します...「http:\www.google.com\」などのサイトでこれをテストしています。 "、だから彼らは間違いなく応答する必要があります

4

2 に答える 2

1

文字列全体を使用してカスタム解析を実行する場合を除いて、HTMLパーサーライブラリを使用することをお勧めします。ここに示すHTMLクリーナーを使用しています。

それはあなたのためにすべての馬を働かせます。

于 2012-04-14T19:15:11.463 に答える
1

あなたのコードは大丈夫です。必ず完全なWebサイトパスを貼り付けてください:http://www. [page] . [domain]例:http://www.google.com そしてこのPERMISSIONをに追加しますAndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />

直前(新規プロジェクトの場合):

<application android:label="@string/app_name">

完全な例:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:label="@string/app_name">
        <activity android:name="MyActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest> 
于 2012-04-14T19:35:14.357 に答える