0

我正在尝试开发一个可以连接到 Internet 并从指定网站读取数据的 Android 应用程序。但是,当我在模拟器上运行程序时,什么也没有发生。有人可以帮我指导我需要做什么吗?这是我的代码

public class HttpExaplme extends Activity {
TextView httpStuff;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.httpex);
    httpStuff = (TextView) findViewById(R.id.tv_http);
    GetHttpEx test = new GetHttpEx();
    String returned;
    try {
        returned = test.getInternetData();
        httpStuff.setText(returned);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public class GetHttpEx {

public String getInternetData() throws Exception
{
    BufferedReader in = null;
    String data = null;
    try{
        HttpClient client = new DefaultHttpClient();
        URI website = new URI("http://www.mybringback.com");
        HttpGet request = new HttpGet();
        request.setURI(website);
        HttpResponse response = client.execute(request);
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String l ="";
        String nl= System.getProperty("line sperator");
        while((l = in.readLine())!=null)
        {
            sb.append(l + nl);
        }
        in.close();
        data = sb.toString();
                return data;
       }
    finally
    {
        try{
            if(in != null)
                {
                    in.close();
                    return data;
                }
        }
        catch(Exception e){
            e.printStackTrace();
        }

    }
}
4

2 回答 2

0

您正在崩溃,因为您在 UI 线程上执行 HTTP 请求。这是不允许的——你会让你的应用程序没有响应,所以它会抛出一个异常。所有 HTTP 请求都必须在线程或 AsyncTask 中进行。

于 2013-03-21T13:14:45.730 回答
0

首先,检查模拟器是否连接到http://www.mybringback.com。通过在 android 浏览器中打开此站点来执行此操作。默认情况下,公司防火墙可能会阻止模拟器请求。

其次,正如@Gabe 所说,将您的网络请求包装在 AsyncTask 中。这里:http: //developer.android.com/reference/android/os/AsyncTask.html

完成这些步骤后回到这里。请发布堆栈跟踪。您可以在 logcat 中查看它(命令行上的 adb -e logcat)。

高温高压

编辑:您是否在清单中设置了 android.permission.INTERNET?

于 2013-03-21T13:26:36.853 回答