0
最終,我的目標是獲得一個Android應用程序,該應用程序從URL接收XML文件,對其進行解析並顯示相關信息(當然,最終目標比這更復雜,但是是當前的目標)。我正在使用Wei-Meng Lee的「Beginning Android Application Development」中的示例,並且我已經注意到本書示例代碼中的一些錯誤(尤其是錯誤變量,如果Eclipse沒有指出它,我會錯過它完全)。Android程序錯誤連接
然而,目前,儘管有權限訪問(3g,4g和wifi已全部測試過),但該應用程序仍無法連接到互聯網,並且能夠通過網絡訪問測試網址,板載瀏覽器。
以下是相關的代碼片段。我做錯了什麼?
private InputStream OpenHttpConnection(String urlString)
throws IOException
{
InputStream in = null;
int response = 01;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("Get");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK){
in = httpConn.getInputStream();
}
}
catch (Exception ex)
{
throw new IOException("Error connecting");
}
return in;
}
我曾嘗試不同的URL:(請注意我都在模擬器和我的Galaxy S2測試),檢查我可以連接到他們每個人在手機的瀏覽器中使用它們。模擬器也沒有任何運氣。
UPDATE:利用下面的非同步代碼:
private class BackgroundTask extends AsyncTask
<String, Void, Bitmap> {
protected Bitmap doInBackground(String... url){
// download an image
Bitmap bitmap = DownloadImage(url[0]);
return bitmap;
}
}
protected void onPostExecute(Bitmap bitmap) {
ImageView img = (ImageView) findViewById(R.id.img);
img.setImageBitmap(bitmap);
}
方法調用上面:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new BackgroundTask().execute("http://www.google.com/intl/en_ALL/images/logos/images_logo_lg.gif");
}
這是在'AsyncTask'中完成的嗎? – JosephChilberry