gpt4 book ai didi

java - Android程序连接错误

转载 作者:行者123 更新时间:2023-12-01 14:13:57 25 4
gpt4 key购买 nike

最终,我的目标是获得一个 Android 应用程序,它从 URL 接收 XML 文件,解析它,并显示相关信息(嗯,最终目标比这复杂得多,但这就是当前的目标)。我使用的是 Wei-Meng Lee 所著的《Beginning Android Application Development》中的示例,并且我已经注意到本书示例代码中的一些错误(特别是错误命名的变量,如果 Eclipse 没有指出它,我就会错过它)完全)。

然而,目前该应用程序无法连接到互联网,尽管有权限、有访问权限(3g、4g 和 wifi 均已测试)并且能够访问机载中的测试 URL浏览器。

以下是相关的代码 fragment 。我做错了什么吗? (注:我在模拟器和 Galaxy S2 上进行了测试)

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,在使用它们之前检查是否可以在手机浏览器中连接到每个 URL。模拟器也没有任何运气。

更新:使用以下内容的异步代码:

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 用于任何需要网络连接的事情。您可以按如下方式设置异步:(这需要一个字符串作为参数并返回一个输入流)

public class OpenHttpConnection extends AsyncTask<String, Void, InputStream> {

@Override
protected String doInBackground(String... params) {
String urlstring = params[0];
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;

}

}

然后你可以像这样调用/运行异步。

OpenHttpConnection connection = new OpenHttpConnection().execute("http://YourURL.com");
InputStream is = connection.get();

关于java - Android程序连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com