0

我在使用 HttpUrlConnection 时遇到了一些问题,当我运行设备(Gingerbread HTC Desire)时,LogCat 显示非常笼统:

11-23 14:26:19.394: WARN/System.err(6591): java.io.IOException: Error connecting

我添加了 AsyncTask 来尝试解决问题,但似乎没有区别。我在底部显示了完整的 logcat,这是有问题的类(缩短了一点并将 url 设置为 google(结果相同):

public class JSoupHelper {
    private static final String LOGIN_URL = "http://www.google.co.uk";

    public JSoupHelper() {
        new Login().execute(LOGIN_URL);
    }
    private class Login extends AsyncTask<String, String, InputStream>{
        @Override
        protected InputStream doInBackground(String... params) {
            String url = params[0];
            Log.d("JSoup-LoginHelper","Starting background AsyncTask on "+url);
            try {
                InputStream is = OpenHttpConnection(url);
                return is;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    }
     private InputStream OpenHttpConnection(String urlString) throws IOException {
        InputStream in = null;
        URL url = new URL(urlString);
        Log.d("JSoup-OHTTPSC","Connecting to "+urlString);
        try{
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setInstanceFollowRedirects(true);
            conn.setDoInput(true);
            conn.connect();
            Log.d("JSoup-OHTTPSC","Connected to "+urlString);

            int response = conn.getResponseCode();
            if (response == HttpsURLConnection.HTTP_OK) {
                in = conn.getInputStream();
            }
            conn.disconnect();
        }
        catch (Exception ex)
        {
            throw new IOException("Error connecting");
        }
        return in;
    }
}

日志猫:

11-23 14:25:59.214: DEBUG/JSoup-LoginHelper(6591): Starting background AsyncTask on http://www.google.co.uk
11-23 14:25:59.234: DEBUG/JSoup-OHTTPSC(6591): Connecting to http://www.google.co.uk
           ~~~~ 20 secs pass ~~~~
11-23 14:26:19.394: WARN/System.err(6591): java.io.IOException: Error connecting
11-23 14:26:19.394: WARN/System.err(6591): at com.example.untitled1.JSoupHelper.OpenHttpsConnection(JSoupHelper.java:67)
11-23 14:26:19.394: WARN/System.err(6591): at com.example.untitled1.JSoupHelper.access$100(JSoupHelper.java:12)
11-23 14:26:19.394: WARN/System.err(6591): at com.example.untitled1.JSoupHelper$Login.doInBackground(JSoupHelper.java:40)
11-23 14:26:19.394: WARN/System.err(6591): at com.example.untitled1.JSoupHelper$Login.doInBackground(JSoupHelper.java:34)
11-23 14:26:19.394: WARN/System.err(6591): at android.os.AsyncTask$2.call(AsyncTask.java)
11-23 14:26:19.394: WARN/System.err(6591): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
11-23 14:26:19.394: WARN/System.err(6591): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
11-23 14:26:19.394: WARN/System.err(6591): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
11-23 14:26:19.394: WARN/System.err(6591): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
11-23 14:26:19.394: WARN/System.err(6591): at java.lang.Thread.run(Thread.java:1027)
11-23 14:26:23.077: INFO/htcfs-main(6749): main()

我的目标是实际获取一个 InputStream 并通过 HttpsUrlConnection 使用 JSoup 对其进行解析,使用 post 登录,然后保存 cookie 和会话变量,然后使用 cookie 我可以对网站进行一些适当的抓取并将结果存储到 Sqlite db ...但一步一步(尤其是在我缺乏调试技能和一般 Java 技能的情况下)。

提前致谢。

4

0 回答 0