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;
}
}
LOGCAT:
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を使用して、Webサイトを適切にスクレイピングし、結果をSqlitedbに保存することです。 ...しかし、一度に1ステップずつ(特に、デバッグスキルと一般的なJavaスキルが不足している場合)。
前もって感謝します。