Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.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并写入文本文件_Php_Android_Json_Post - Fatal编程技术网

将JSON数据从Android发送到PHP并写入文本文件

将JSON数据从Android发送到PHP并写入文本文件,php,android,json,post,Php,Android,Json,Post,我试图获取一个在Android设备上动态创建的特定JSON文件,并使用HTTP post请求将该数据发送到PHP脚本,以存储到文本文件中供以后使用。最终,我还需要将数据保存在MySQL数据库中,但我正在一步一步地工作。JSON文件格式的一个示例如下: {"timestamp": 1351181576.64078, "name": "engine_speed", "value": 714.0} {"timestamp": 1351181576.64578, "name": "vehicle_spe

我试图获取一个在Android设备上动态创建的特定JSON文件,并使用HTTP post请求将该数据发送到PHP脚本,以存储到文本文件中供以后使用。最终,我还需要将数据保存在MySQL数据库中,但我正在一步一步地工作。JSON文件格式的一个示例如下:

{"timestamp": 1351181576.64078, "name": "engine_speed", "value": 714.0}
{"timestamp": 1351181576.64578, "name": "vehicle_speed", "value": 0.0}
{"timestamp": 1351181576.6507802, "name": "brake_pedal_status", "value": true}
这个文件是在Android上逐行动态创建的,所以我不能一次发送整个文件,但是创建的每一行我都要发送到PHP脚本。我已经编写了一个基本的Android应用程序,当按下按钮时,它会获取一个JSONObject,并使用HTTPPOST将其发送到PHP脚本。现在我不担心将实际的JSON文件解析为要发送的对象,我只使用两个测试JSONObject。PHP脚本获取第一个对象并将其存储到文本文件中没有问题,但另一个对象的读数一直为null,我不知道为什么。我对PHP和Android编程比较陌生,不确定是否以正确的方式发送和接收数据。以下是我的相关安卓应用程序代码片段:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Button button = (Button) findViewById(R.id.sendData);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Perform action on click
            Toast.makeText(MainActivity.this, "button was pressed",
                    Toast.LENGTH_SHORT).show();
            try {
                JSONObject json = new JSONObject(); 
                json.put("timestamp", 1351181576.64078); 
                json.put("name", "engine_speed");
                json.put("value", 714.0);
                postData(json);

                JSONObject json2 = new JSONObject(); 
                json.put("timestamp", 1351181576.7207818); 
                json.put("name", "steering_wheel_angle");
                json.put("value", 11.1633);
                postData(json2);
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    });     
}

public void postData(JSONObject json) throws JSONException {
    HttpClient httpclient = new DefaultHttpClient();

    try { 
        HttpPost httppost = new HttpPost(URL);

        List<NameValuePair> nvp = new ArrayList<NameValuePair>(2);    
        nvp.add(new BasicNameValuePair("json", json.toString()));
        //httppost.setHeader("Content-type", "application/json");  
        httppost.setEntity(new UrlEncodedFormEntity(nvp));
        HttpResponse response = httpclient.execute(httppost); 

        if(response != null) {
            InputStream is = response.getEntity().getContent();
            //input stream is response that can be shown back on android
        }

    }catch (Exception e) {
        e.printStackTrace();
    } 
}

您的问题在Android应用程序中:

            JSONObject json = new JSONObject(); 
            json.put("timestamp", 1351181576.64078); 
            json.put("name", "engine_speed");
            json.put("value", 714.0);
            postData(json);

            JSONObject json2 = new JSONObject(); 
            json.put("timestamp", 1351181576.7207818); 
            json.put("name", "steering_wheel_angle");
            json.put("value", 11.1633);
            postData(json2);
您没有将任何数据放入
json2
,而是在修改
json
。然后将完全未修改的(因此是空的)json2对象发送到PHP,PHP将其打印为
{}

如果您修复了Android应用程序以正确填写
json2
,那么应该可以:

            JSONObject json2 = new JSONObject(); 
            json2.put("timestamp", 1351181576.7207818); 
            json2.put("name", "steering_wheel_angle");
            json2.put("value", 11.1633);
            postData(json2);

哦,我的天,我觉得自己像个白痴。总是这样的小事让我着迷。谢谢你的帮助!
            JSONObject json = new JSONObject(); 
            json.put("timestamp", 1351181576.64078); 
            json.put("name", "engine_speed");
            json.put("value", 714.0);
            postData(json);

            JSONObject json2 = new JSONObject(); 
            json.put("timestamp", 1351181576.7207818); 
            json.put("name", "steering_wheel_angle");
            json.put("value", 11.1633);
            postData(json2);
            JSONObject json2 = new JSONObject(); 
            json2.put("timestamp", 1351181576.7207818); 
            json2.put("name", "steering_wheel_angle");
            json2.put("value", 11.1633);
            postData(json2);