实际上我在一个应用程序中工作,但是我在连接Web服务时遇到问题,我有以下代码:
try{
HttpServices post = new HttpServices ("http://sotem.com.mx/WebServices/controller.php");
post.add("funcion", "test");
System.out.println("Si lo mande///////////////////Jhgfdsa");
String respuesta = post.getRespueta();
System.out.println(respuesta);
Toast.makeText(getApplicationContext(),"Cool: "+respuesta, Toast.LENGTH_SHORT).show();
}catch (Exception ex) {
Toast.makeText(getApplicationContext(),"error: "+ex.toString(), Toast.LENGTH_SHORT).show();
}
但是我可以建立连接,我可以尝试进行其他思考,但是我可以建立线程,这是我的新手,应用程序启动器出现此错误:
Android OS网络上的主线程异常
答案 0 :(得分:1)
在主线程上执行网络操作是不正确的。您可以使用AsyncTask执行此类操作并以BufferedImage
方法处理结果。
onPostExecute
并编写class YourNetworkingTasks extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
try{
HttpServices post = new HttpServices ("http://sotem.com.mx/WebServices/controller.php");
post.add("funcion", "test");
String respuesta = post.getRespueta();
Log.d("Output", respuesta);
// DON'T DO ANY UI CHANGES LIKE TOAST FROM BACKGROUND THREAD.. Toast.makeText(getApplicationContext(),"Cool: "+respuesta, Toast.LENGTH_SHORT).show();
}catch (Exception ex) {
// DON'T DO ANY UI CHANGES LIKE TOAST FROM BACKGROUND THREAD.. Toast.makeText(getApplicationContext(),"error: "+ex.toString(), Toast.LENGTH_SHORT).show();
}
return null;
}
protected void onPostExecute(RSSFeed feed) {
// TODO: YOU CAN MAKE U.I. Changes Like Display text in TextView, TOAST HERE.
// TODO: do something with the result
}
}
以在后台线程中运行该代码。
也请不要因为您使用的是 http 而不是 https ,由于android最近的安全性更改,您可能会得到Network Security Exception并且可能不会得到任何输出。