Android: проблемы с получением html с веб-страницы

Я пишу приложение для Android, которое должно получать html с php-страницы и использовать проанализированные данные со страницы. Я искал эту проблему здесь и в итоге использовал некоторый код из примера, который выложил другой постер. Вот мой код:

HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(url);
    try {
        Log.d("first","first");
        HttpResponse response = client.execute(request);
        String html = "";
        Log.d("second","second");
        InputStream in = response.getEntity().getContent();
        Log.d("third","third");
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        Log.d("fourth","fourth");
        StringBuilder str = new StringBuilder();
        String line = null;
        Log.d("fifth","fifth");
        while((line = reader.readLine()) != null) {
            Log.d("request line",line);
        }
        in.close();
    } catch (ClientProtocolException e) {

    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.d("error", "error");
    }
    Log.d("end","end");
}

Как я уже говорил, URL-адрес — это php-страница. Всякий раз, когда я запускаю этот код, он выводит первое первое сообщение, но затем выводит сообщение об ошибке и, наконец, сообщение об окончании. Я пытался изменить заголовки, но мне не повезло. Любая помощь будет принята с благодарностью, так как я не знаю, что я делаю неправильно.

Спасибо!

Когда я делаю e.getMessage() и распечатываю это, в регистраторе все, что он говорит, это stanford.edu. Надеюсь, это поможет. Вот трассировка стека:

01-17 16:58:27.687: WARN/System.err(452): java.net.UnknownHostException: stanford.edu 01-17 16:58:27.947: WARN/System.err(452): на java.net. InetAddress.lookupHostByName(InetAddress.java:506) 01-17 16:58:27.947: WARN/System.err(452): в java.net.InetAddress.getAllByNameImpl(InetAddress.java:294) 01-17 16:58: 27.977: WARN/System.err(452): на java.net.InetAddress.getAllByName(InetAddress.java:256) 01-17 16:58:27.977: WARN/System.err(452): на org.apache.http .impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136) 01-17 16:58:28.027: WARN/System.err(452): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry. java:164) 01–17 16:58:28.027: WARN/System.err(452): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 01–17 16:58: 28.047: WARN/System.err(452): в org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348) 01-17 16:58:28.057 : WARN/System.err(452): в org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 01-17 16:58:28.057: WARN/System.err(452): в org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 01-17 16:58:28.117: WARN/System.err(452): в org.apache.http.impl.client.AbstractHttpClient .execute(AbstractHttpClient.java:465) 01-17 16:58:28.117: WARN/System.err(452): at edu.stanford.cs247.util.ColorHandler.getInfo(ColorHandler.java:44) 01-17 16 :58:28.217: WARN/System.err(452): в edu.stanford.cs247.util.ColorHandler.handleMessage(ColorHandler.java:70) 01-17 16:58:28.217: WARN/System.err(452) : в android.os.Handler.dispatchMessage(Handler.java:99) 01-17 16:58:28.247: WARN/System.err(452): в android.os.Looper.loop(Looper.java:123) 01 -17 16:58:28.257: WARN/System.err(452): в android.app.ActivityThread.main(ActivityThread.java:3647) 01-17 16:58:28.257: WARN/System.err(452): на java.lang.reflect.Method.invokeNati ve(собственный метод) 01-17 16:58:28.297: WARN/System.err(452): в java.lang.reflect.Method.invoke(Method.java:507) 01-17 16:58:28.297: WARN /System.err(452): на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-17 16:58:28.327: WARN/System.err(452): на com. android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-17 16:58:28.337: WARN/System.err(452): в dalvik.system.NativeStart.main(собственный метод)


person Kyle    schedule 17.01.2011    source источник


Ответы (4)


Во-первых, вызовы метода Log.d() могут быть чем-то вроде Log.d("MyAppName", "Message"), а не Log.d("Message", "Message"). Таким образом, вы можете создать фильтр в LogCat для своего приложения и видеть только свои сообщения. (Проверьте это на Eclipse)

Для вашей проблемы попробуйте поместить какое-нибудь полезное сообщение в блок catch, например:

try{
...
} catch (IOException e){
Log.d("MyAppName", e.getMessage());
}

Это покажет вам проблему, которая вызывает исключение. Рекомендуем взглянуть на в этом примере кода getUrlContent() делает именно то, что вам не нужно.

Удачи

person Bruno Berisso    schedule 17.01.2011
comment
@GojaN Log.d(MyClass, MyMessage, e); наверное будет предпочтительнее. Таким образом, вы получите полную трассировку стека. - person Cheryl Simon; 18.01.2011
comment
Это бог. Может быть, я предпочитаю Log.d(MyClass, e.getMessage(), e). Таким образом, у вас есть комбинация обоих :) - person Bruno Berisso; 18.01.2011
comment
Когда я распечатал сообщение, в нем было только название моего университета.edu - person Kyle; 18.01.2011
comment
@GojaN на самом деле, когда вы просите его распечатать трассировку стека, содержащую текст сообщения. - person Cheryl Simon; 18.01.2011
comment
@Kyle Ты распечатал полную трассировку стека? Пожалуйста, отредактируйте свой вопрос, чтобы включить это. - person Cheryl Simon; 18.01.2011
comment
Только что опубликовал. Еще раз спасибо за вашу помощь! - person Kyle; 18.01.2011

Первая строка вашей трассировки стека говорит:

java.net.UnknownHostException: stanford.edu

Вы должны научиться читать трассировки стека. Быстрый поиск «UnknownHostException» говорит вам, что это:

Брошенный, чтобы указать, что IP-адрес хоста не может быть определен.

Это означает, что он не может превратить stanford.edu в IP. Вероятно, вам нужно www.stanford.edu или что-то в этом роде. Попробуйте пропинговать адрес в командной строке ping www.stanford.edu и убедитесь, что он разрешается в IP-адрес.

person Cheryl Simon    schedule 18.01.2011
comment
Я так раньше делал, безрезультатно :( - person Kyle; 18.01.2011
comment
Я знаю, как читать трассировку стека, я просто не смог найти ничего, что могло бы мне помочь, когда я искал UnknownHostException :( - person Kyle; 18.01.2011
comment
Это разрешение на IP-адрес - person Kyle; 18.01.2011
comment
догадаться. Я не добавил интернет-разрешение в свой файл манифеста :( - person Kyle; 18.01.2011

Я забыл добавить разрешение на доступ в Интернет в свой файл манифеста.

person Kyle    schedule 18.01.2011

добавить в манифест <uses-permission android:name="android.permission.INTERNET" />

person user2677537    schedule 12.11.2015