gpt4 book ai didi

android - 我不知道如何解决(android.os.networkonmainthreadexception)

转载 作者:搜寻专家 更新时间:2023-11-01 09:10:36 26 4
gpt4 key购买 nike

我总是得到这个错误

   public class FlightAvailabityGoActivity extends ListActivity {
String[] monthName = {"Jan", "Feb",
"Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov",
"Dec"
};


date userDate=new date();
int DepDay=userDate.getDays();
int DepMonth=userDate.getMonths();

bean beanz=new bean();
private TextView fromToTextView;
Calendar calendar = new GregorianCalendar();
String am_pm;
String TAG="from";
private TextView from,to;
languages lang=new languages();
String En_Ar=lang.getLang();
Element dest;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

try{
Log.v(TAG, "in go activity " +TAG);

super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.listplaceholder_flightavailabity);
if(En_Ar.equals("arabic"))
{
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title_flightavailabity_ar);
// from=(TextView)findViewById(R.id.fromText);
// from.setText(" من ");
// to=(TextView)findViewById(R.id.toText);
//to.setText(" إلى ");
Log.v(TAG, "1 " +TAG);
}
else
{
Log.v(TAG, "1 " +TAG);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
R.layout.window_title_flightavailabity);
}






////
Bundle extras = getIntent().getExtras();

String FromCity = extras.getString("from");
String ToCity = extras.getString("to");
Log.v(TAG, "from city after moving " +FromCity);
Log.v(TAG, "to city after moving " +ToCity);






ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
ArrayList<HashMap<String, String>> mylist1 = new ArrayList<HashMap<String, String>>();

Log.v(TAG, "2 " +TAG);
//String xml = XMLfunctions.getXMLFlightAva(FromCity,ToCity);
String xml=XMLfunctions.getXMLFlightAva(FromCity,ToCity); // error is here
Log.v(TAG, "3 " +TAG); // this will not display
xml=xml.trim();
Log.v(TAG, "4 " +TAG);

我对此很生气,我理解它关于使用互联网的问题,但我不知道如何解决它?如您所见,我在我的 XML 函数类中通过 HTTP get 读取 XML,它在此处以字符串形式返回 XML,这里所有的东西都崩溃了

我必须改变类(class)吗 String xml=XMLfunctions.getXMLFlightInfo(FromCity);

同样的方法

          String xml=XMLfunctions.getXMLFlightAva(FromCity,ToCity);

这是类(class)

             public class XMLfunctions {
String TAG;



public final static Document XMLfromString(String xml){


Document doc = null;

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {

DocumentBuilder db = dbf.newDocumentBuilder();

InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);

} catch (ParserConfigurationException e) {
System.out.println("XML parse error: " + e.getMessage());
return null;
} catch (SAXException e) {
System.out.println("Wrong XML file structure: " + e.getMessage());
return null;
} catch (IOException e) {
System.out.println("I/O exeption: " + e.getMessage());
return null;
}

return doc;

}

/** Returns element value
* @param elem element (it is XML tag)
* @return Element value otherwise empty String
*/
public final static String getElementValue( Node elem ) {
Node kid;
if( elem != null){
if (elem.hasChildNodes()){
for( kid = elem.getFirstChild(); kid != null; kid = kid.getNextSibling() ){
if( kid.getNodeType() == Node.TEXT_NODE ){
return kid.getNodeValue();
}
}
}
}
return "";
}
////////////////////////
public static String getXMLFlightInfo(String Y_or_T){
String line = null;
String TAG="TAG";
date userDate=new date();
int DepDay=userDate.getDays();
int DepMonth=userDate.getMonths();



try {

DefaultHttpClient httpClient = new DefaultHttpClient();
// HttpPost httpPost = new HttpPost("http://p-xr.com/xml");
//HttpGet httpPost=new HttpGet("http://10.128.11.206:9080/mobile/FlightSchdIphoneServlet?depCity="+fromCity+"&arrCity="+toCity+"&day="+DepDay+"&month="+DepMonth+"");
//HttpGet httpPost=new HttpGet("http://mysv.net.sa/Web/mobile/FlightAvailIphoneServlet?depCity=JED&arrCity=RUH&day=29&month=11&submit=+GO+");
HttpGet httpPost=new HttpGet("http://10.131.13.43:9080/onlineSMS/xmlFlightInfo.html");

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
line = EntityUtils.toString(httpEntity);



} catch (UnsupportedEncodingException e) {
line = "<array status=\"error\"><msg>Can't connect to server</msg></array>";
} catch (MalformedURLException e) {
line = "<array status=\"error\"><msg>Can't connect to server</msg></array>";
} catch (IOException e) {
line = "<array status=\"error\"><msg>Can't connect to server</msg></array>";
}

return line;

}

最佳答案

StrictMode.ThreadPolicy从 API 级别 9 开始引入,默认行为在 API 级别 11 中已更改,简而言之,不允许网络操作(包括 HttpClient 和 HttpUrlConnection)在 UI 线程上执行。

正确的策略是将网络操作移出 UI 线程,例如使用 AsyncTask .

希望这对您有所帮助。

关于android - 我不知道如何解决(android.os.networkonmainthreadexception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8575617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com