1

我正在尝试开发一个使用 jsoup-1.7.1.jar 核心库的 Android 应用程序。我将 jar 文件作为库包含在内,但现在当我想使用它时,我每次都会收到 SocketTimeoutException。我正在使用 Ubuntu 12.04,eclipse-juno Build id:20120614-1722,emulator/avd 有 100MB 的 sd,512Ram 并且在 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

是的,我搜索了所有不同类型的帖子,但没有找到任何解决我问题的方法。(包括这一篇:How to use AsyncTask for Jsoup Parser?

  • 是的,我的 Manifest.xml 中有 Internet 权限(WebView 效果很好)
  • 我将代理设置更改为无代理(即使我不相信它是由它引起的,因为在 WebView 也可以正常工作之前)。
  • 我尝试使用不同的页面,甚至使用普通 IP(所以没有 DNS 的问题)

也许有一些明显的缺失?非常感谢您的帮助,提前谢谢!

Edit1:根据wireshark发送请求并返回答案: 丝鲨帽

Edit2:这真的很奇怪,有时它有效,我得到了答案。但是 3 分钟后,当我再次尝试时,它不再起作用了。问题是它只能工作 10 次中的 1 次。有任何想法吗?

4

0 回答 0