试图在模拟器上获取Android应用程序

时间:2013-03-21 13:12:33

标签: android http android-emulator

我正在尝试开发一款可以连接到互联网并从指定网站读取数据的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();
        }

    }
}

2 个答案:

答案 0 :(得分:0)

由于您在UI线程上执行HTTP请求,因此崩溃了。这是不允许的 - 你会让你的应用无响应,所以它会引发异常。所有HTTP请求必须在线程或AsyncTask中进行。

答案 1 :(得分:0)

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

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

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

HTH

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