App Force在尝试执行HTTP URL Connect时关闭

时间:2013-11-27 21:07:10

标签: java android

我是Android编程新手。这是我的第一个应用程序。作为应用程序的一部分,当我点击一个按钮时,我试图使用android文档中描述的HTTP URL Connect方法连接到URL。但是,当我点击按钮时,我的app力就会关闭。我也在清单文件中添加了Internet访问和访问网络状态权限。 以下是我的代码:

public class GET_PNR extends Activity implements OnClickListener {

 private String readStream(InputStream is) {
        try {
          ByteArrayOutputStream bo = new ByteArrayOutputStream();
          int i = is.read();
          while(i != -1) {
            bo.write(i);
            i = is.read();
          }
          return bo.toString();
        } catch (IOException e) {
          return "";
        }
    }
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_get__pnr);
    View txtview = findViewById(R.id.get_pnr);
    txtview.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.get__pnr, menu);
    return true;
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    TextView pnrview = (TextView) findViewById(R.id.PNR);
    CharSequence input;
    input = pnrview.getText();
    System.out.println(input);
    String result;

    HttpURLConnection urlConnection = null; 
    try{
        URL url = new URL("http://www.google.com/");
        urlConnection = (HttpURLConnection) url.openConnection();
        InputStream in = new BufferedInputStream(urlConnection.getInputStream());
        result = readStream(in);
       System.out.println(result);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
         finally {
             urlConnection.disconnect();
           }
     }
}

在这方面的一些帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:0)

在Android的最新版本中,操作系统将阻止您在主线程中进行网络连接,您应该将代码移动到工作线程,创建自己的线程,或者使用Android API AsyncTask以便成功执行你的程序......

希望这有帮助。

问候!