Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON从Android发送到PHP_Android_Json - Fatal编程技术网

将JSON从Android发送到PHP

将JSON从Android发送到PHP,android,json,Android,Json,我一直在努力将JSON对象从android上的应用程序发送到php文件(本地托管)。php位与我的问题无关,因为wireshark没有从我的应用程序(eclipse/ADK中的仿真)记录任何活动,几乎可以肯定这与我的发送方法有关: try { JSONObject json = new JSONObject(); json.put("id", "5"); json.put("time", "3:00"); json.pu

我一直在努力将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可以解决这个问题,还是我错过了其他重要的东西


感谢您提供的帮助。

您应该使用asynctask或thread,因为在更高版本的android中,它不允许从ui thread执行长时间运行的任务类网络操作


假设您正在使用emulator测试代码,
localhost
引用模拟环境。如果需要访问计算机上托管的php,则需要使用IP 10.0.2.2或LAN IP,如192.168.1.3。检查


您可以参考了解如何在

中运行长时间运行的操作。您是否得到任何响应?非常感谢。我想,如果我在实际设备上运行它,问题也会一样。好吧,我相信它现在可以准工作了,我已经在asynctask中围绕我的代码片段,尽管我正在努力找出.execute()需要什么类型。新建DataSendTask().execute();在应用程序开始时被调用,但当然不会编译。有什么帮助吗?在实际设备中,如果计算机位于同一子网中,则需要使用LAN IP。如果它在互联网云中,您可以使用公共IP/主机名。关于你的第二条评论,你能用AsyncTask代码发布一个新问题吗?这将有助于其他人也有一个研究,并提供帮助。我得到了它的工作,我可能会清理代码,并张贴在php上。我应该编辑这篇文章吗?非常感谢你的帮助!