【问题标题】:android.os.networkonmainthreadexception Http Requestandroid.os.networkonmainthreadexception Http 请求
【发布时间】:2012-04-05 22:15:10
【问题描述】:

您好,我即将使用 wampserver 执行 HTTP 请求以将一些数据添加到本地数据库,因此我在该按钮中创建了一个按钮,并且我将执行该操作,但问题是我可以' t连接到数据库!

这是 toast 上的消息 “android.os.networkonmainthreadexception”

这是我的代码 ---> http://pastebin.com/TsQ7NbNm

                    ============================

我是 Android 编程新手,所以请帮助我!

【问题讨论】:

    标签: android xmlhttprequest


    【解决方案1】:

    您不能在您的 UI 线程上发出 http 请求。考虑使用 AsyncTask 或其他异步调用方法。

    【讨论】:

    【解决方案2】:

    在 API 级别 10 之前,可以在 UI 线程上发出 http 请求。但是从 API-11 开始,任何需要很长时间才能完成的任务都必须在后台任务上完成。这背后的原因是任何在 UI 线程上花费 5 秒或更长时间的任务,然后是 ANR(应用程序无响应),即强制关闭发生。为此,我们创建了一些后台线程或简单地使用 AsyncTask。

    【讨论】:

      【解决方案3】:

      如果您想在服务器上发布数据,那么您需要为发布数据精心设计服务器。最近我的服务器配置我使用此代码发布数据并且执行良好。

      Button send = (Button) findViewById(R.id.send_sms);        
          send.setOnClickListener(this);
      
      public void onClick(View v) 
       {
             switch (v.getId()) 
             {
      
             case R.id.send_sms:
      
                     try {
                          HttpClient client = new DefaultHttpClient();  
                          String postURL = "http://10.0.2.2/folder/saver.php";
                          HttpPost post = new HttpPost(postURL); 
                              List<NameValuePair> params = new ArrayList<NameValuePair>();
                              params.add(new BasicNameValuePair("cell", "+8801899999"));
                              params.add(new BasicNameValuePair("pin", "1234"));
                              params.add(new BasicNameValuePair("msg", "hi!"));
                              UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,HTTP.UTF_8);
                              post.setEntity(ent);
                              HttpResponse responsePOST = client.execute(post);  
                              HttpEntity resEntity = responsePOST.getEntity();  
                              if (resEntity != null) {
                                  showAlert(EntityUtils.toString(resEntity));
                                  //Log.i("RESPONSE",EntityUtils.toString(resEntity));
                              }
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
      
      
                 break;
      
      
             }
       }
      

      【讨论】:

      • 我试过你的代码没有错误,但它对我不起作用这是我的代码看起来如何 --> pastebin.com/9NgekWqm
      • 问题出在哪里,请帮忙解决一下,我在 iPhone 上做的非常简单,但在 android 上似乎更难:(
      【解决方案4】:

      你可以试试这个方法。如果你的服务器有密码,那就给它。

      <?php
      mysql_connect("localhost","root","");
      mysql_select_db("test");
      
      
      $valeur1=$_REQUEST['valeur1'];
      $valeur2=$_REQUEST['valeur2'];
      
      $req=mysql_query("insert into testapp (valeur1,valeur2) values('$valeur1','$valeur2')");
      if($req)
      echo "ok";
      else
      echo "erreur";
      ;
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 2015-04-10
        • 1970-01-01
        • 2010-11-26
        • 2011-12-07
        • 2012-06-28
        相关资源
        最近更新 更多