Android — Jsoup — исключение SocketTimeoutException

Я пытаюсь разработать приложение для Android, в котором используется основная библиотека jsoup-1.7.1.jar. Я включил файл jar в качестве библиотеки, но теперь, когда я хочу его использовать, я каждый раз получаю исключение SocketTimeoutException. Я работаю над Ubuntu 12.04, идентификатор сборки eclipse-juno: 20120614-1722, эмулятор / avd имеет 100 МБ SD, 512 ОЗУ и находится на уровне API 16.

Вот мой код:

public class MainActivity extends Activity {

private EditText text;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text = (EditText) findViewById(R.id.editText1);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.mainmenue, menu);
    return true;
}

public void onClick(View view) {

    //Yes I'm aware that this should not be done. I'm planing to use it in the AsyncTask
    //doInBackground method, but since it was not working there, I decided to track it
    //down here in the main-activity -> so it's just for debug
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);


    Document doc = null;
    String url1 = "http://213.165.64.71";
    String url2 = "http://www.google.com";
    try {
        doc = Jsoup.connect(url2).timeout(10*1000).get();
    } catch (SocketTimeoutException a) {
        Log.e("MyAPP", "Exception----------A!", a);
    } catch (Exception e) {
        Log.e("MyAPP", "Exception----------E!", e);
    }
    String title = doc.title();
    Log.i("MyAPP", "Title="+title);
}
}

Журнал ошибок:

10-05 10:45:23.680: E/MyAPP(1433): Exception----------A!
10-05 10:45:23.680: E/MyAPP(1433): java.net.SocketTimeoutException
10-05 10:45:23.680: E/MyAPP(1433):  at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
10-05 10:45:23.680: E/MyAPP(1433):  at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
10-05 10:45:23.680: E/MyAPP(1433):  at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
10-05 10:45:23.680: E/MyAPP(1433):  at java.io.InputStream.read(InputStream.java:163)
10-05 10:45:23.680: E/MyAPP(1433):  at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
10-05 10:45:23.680: E/MyAPP(1433):  at java.io.BufferedInputStream.read(BufferedInputStream.java:227)
10-05 10:45:23.680: E/MyAPP(1433):  at libcore.io.Streams.readAsciiLine(Streams.java:201)
10-05 10:45:23.680: E/MyAPP(1433):  at libcore.net.http.ChunkedInputStream.readChunkSize(ChunkedInputStream.java:77)
10-05 10:45:23.680: E/MyAPP(1433):  at libcore.net.http.ChunkedInputStream.read(ChunkedInputStream.java:47)
10-05 10:45:23.680: E/MyAPP(1433):  at java.io.BufferedInputStream.read(BufferedInputStream.java:304)
10-05 10:45:23.680: E/MyAPP(1433):  at java.io.InputStream.read(InputStream.java:163)
10-05 10:45:23.680: E/MyAPP(1433):  at org.jsoup.helper.DataUtil.readToByteBuffer(DataUtil.java:113)
10-05 10:45:23.680: E/MyAPP(1433):  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:447)
10-05 10:45:23.680: E/MyAPP(1433):  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:429)
10-05 10:45:23.680: E/MyAPP(1433):  at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:393)
10-05 10:45:23.680: E/MyAPP(1433):  at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:159)
10-05 10:45:23.680: E/MyAPP(1433):  at org.jsoup.helper.HttpConnection.get(HttpConnection.java:148)
10-05 10:45:23.680: E/MyAPP(1433):  at de.funkypopcorn.reggae_a_gwaan.MainActivity.onClick(MainActivity.java:58)
10-05 10:45:23.680: E/MyAPP(1433):  at java.lang.reflect.Method.invokeNative(Native Method)
10-05 10:45:23.680: E/MyAPP(1433):  at java.lang.reflect.Method.invoke(Method.java:511)
10-05 10:45:23.680: E/MyAPP(1433):  at android.view.View$1.onClick(View.java:3586)
10-05 10:45:23.680: E/MyAPP(1433):  at android.view.View.performClick(View.java:4084)
10-05 10:45:23.680: E/MyAPP(1433):  at android.view.View$PerformClick.run(View.java:16966)
10-05 10:45:23.680: E/MyAPP(1433):  at android.os.Handler.handleCallback(Handler.java:615)
10-05 10:45:23.680: E/MyAPP(1433):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-05 10:45:23.680: E/MyAPP(1433):  at android.os.Looper.loop(Looper.java:137)
10-05 10:45:23.680: E/MyAPP(1433):  at android.app.ActivityThread.main(ActivityThread.java:4745)
10-05 10:45:23.680: E/MyAPP(1433):  at java.lang.reflect.Method.invokeNative(Native Method)
10-05 10:45:23.680: E/MyAPP(1433):  at java.lang.reflect.Method.invoke(Method.java:511)
10-05 10:45:23.680: E/MyAPP(1433):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-05 10:45:23.680: E/MyAPP(1433):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-05 10:45:23.680: E/MyAPP(1433):  at dalvik.system.NativeStart.main(Native Method)
10-05 10:45:23.730: E/AndroidRuntime(1433): FATAL EXCEPTION: main
10-05 10:45:23.730: E/AndroidRuntime(1433): java.lang.IllegalStateException: Could not execute method of the activity
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.view.View$1.onClick(View.java:3591)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.view.View.performClick(View.java:4084)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.view.View$PerformClick.run(View.java:16966)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.os.Handler.handleCallback(Handler.java:615)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.os.Looper.loop(Looper.java:137)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.app.ActivityThread.main(ActivityThread.java:4745)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at java.lang.reflect.Method.invokeNative(Native Method)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at java.lang.reflect.Method.invoke(Method.java:511)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at dalvik.system.NativeStart.main(Native Method)
10-05 10:45:23.730: E/AndroidRuntime(1433): Caused by: java.lang.reflect.InvocationTargetException
10-05 10:45:23.730: E/AndroidRuntime(1433):     at java.lang.reflect.Method.invokeNative(Native Method)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at java.lang.reflect.Method.invoke(Method.java:511)
10-05 10:45:23.730: E/AndroidRuntime(1433):     at android.view.View$1.onClick(View.java:3586)
10-05 10:45:23.730: E/AndroidRuntime(1433):     ... 11 more
10-05 10:45:23.730: E/AndroidRuntime(1433): Caused by: java.lang.NullPointerException
10-05 10:45:23.730: E/AndroidRuntime(1433):     at de.funkypopcorn.reggae_a_gwaan.MainActivity.onClick(MainActivity.java:65)
10-05 10:45:23.730: E/AndroidRuntime(1433):     ... 14 more

Да, я искал все сообщения разных типов и не нашел решения своей проблемы. (включая этот: Как использовать AsyncTask для Jsoup Parser?)

  • Да, у меня есть доступ к Интернету в моем Manifest.xml (WebView отлично работает)
  • Я изменил настройки прокси на без прокси (хотя я не верю, что это вызвано этим, потому что раньше WebView тоже работал).
  • Я пробовал с разными страницами и даже с обычным IP (так что проблем с DNS нет)

Может чего-то явно не хватает? Помощь очень ценится, спасибо заранее!

Edit1: согласно wireshark запрос отправляется, а ответ возвращается: wireshark-cap

Edit2: Это действительно странно, иногда это работает, и я получаю ответ. Но через 3 минуты, когда я снова пытаюсь это сделать, он больше не работает. Проблема в том, что это работает только ~ 1 из 10 раз. Есть идеи?


person funkypopcorn    schedule 05.10.2012    source источник
comment
не так далеко, извините! Проект находится на льду уже около 3-х месяцев. Я дам вам знать, когда я продолжу в марте или апреле.   -  person funkypopcorn    schedule 04.02.2013
comment
У меня есть аналогичная проблема, и я решил ее следующим образом: stackoverflow.com/a/10248321/2087208   -  person Leandro Hoffmann    schedule 02.10.2013