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