我是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();
}
}
}
在这方面的一些帮助将不胜感激。 谢谢!
答案 0 :(得分:0)
在Android的最新版本中,操作系统将阻止您在主线程中进行网络连接,您应该将代码移动到工作线程,创建自己的线程,或者使用Android API AsyncTask以便成功执行你的程序......
希望这有帮助。
问候!