将JSON从Android发送到PHP

时间:2013-01-24 05:46:25

标签: android json

我一直在努力将JSON对象从android上的应用程序发送到php文件(本地托管)。 php位与我的问题无关,因为wireshark没有记录我的应用程序中的任何活动(在eclipse / ADK中进行模拟),这几乎肯定与我的发送方法有关:

      try {
        JSONObject json = new JSONObject();
        json.put("id", "5");
        json.put("time", "3:00");
        json.put("date", "03.04.12");
        HttpParams httpParams = new BasicHttpParams();
        HttpClient client = new DefaultHttpClient(httpParams);
        //
        //String url = "http://10.0.2.2:8080/sample1/webservice2.php?" + 
        //             "json={\"UserName\":1,\"FullName\":2}";
        String url = "http://localhost/datarecieve.php";

        HttpPost request = new HttpPost(url);
        request.setEntity(new ByteArrayEntity(json.toString().getBytes(
                "UTF8")));
        request.setHeader("json", json.toString());
        HttpResponse response = client.execute(request);
        HttpEntity entity = response.getEntity();
        // If the response does not enclose an entity, there is no need
        if (entity != null) {
            InputStream instream = entity.getContent();

        }
    } catch (Throwable t) {
        Toast.makeText(this, "Request failed: " + t.toString(),
                Toast.LENGTH_LONG).show();
    }

我已经从我发现的一个例子中修改了这个,所以我确信我已经采用了一些非常好的代码并将其破坏了。我理解多线程的要求,所以我的应用程序不会挂起并死掉,但我不确定它的实现。使用Asynctask会解决这个问题,还是我错过了其他重要的东西?

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

你应该使用asynctask或thread,因为在更高版本的android中它不允许像ui线程那样长时间运行任务,如网络操作。

here is the link for more description

答案 1 :(得分:1)

假设您使用模拟器测试代码,localhost指的是模拟环境。如果您需要访问计算机上托管的php,则需要使用IP 10.0.2.2或LAN IP,例如192.168.1.3。查看Referring to localhost from the emulated environment

您可以参考Keeping Your App Responsive了解如何在AsyncTask

中运行长时间运行的操作