0

我正在尝试将一些 STRING 变量从 android 发送到 PHP 作为 JSON。我使用互联网上的指南之一完成了此操作,但不幸的是它不起作用,我无法使用 StackOverflow 上的其他类似问题来解决它。

这是我的安卓代码:-

JSONObject jsonObject= new JSONObject();
JSONArray jsonArray=new JSONArray();

public class sendData extends AsyncTask<String, String, Void> {

    @Override
    protected Void doInBackground(String... params) {

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://bdp.site40.net/sendRegData.php");

        try {
            HttpEntity httpEntity = new StringEntity(jsonArray.toString());
            httpPost.setEntity(httpEntity);
            httpClient.execute(httpPost);
        }
        catch (IOException e) {
        }

        return null;
    }
}

public void onClickSubmitButton(View view) throws JSONException {

    jsonObject.put("name",name);
    jsonObject.put("blood",blood);
    jsonObject.put("cell",cell);
    jsonObject.put("email", email);
    jsonObject.put("address",address);
    jsonObject.put("country",country);
    jsonObject.put("state",state);
    jsonObject.put("city",city);

    jsonArray.put(jsonObject);

    new sendData().execute();

}

这是我的 PHP 代码:-

<?php 

    $json = file_get_contents("php://input");
    $data = json_decode($json);
    $name = $data[0]->name;
    $blood = $data[0]->blood;
    $cell = $data[0]->cell;
    $email = $data[0]->email;
    $address = $data[0]->address;
    $country = $data[0]->country;
    $state = $data[0]->state;
    $city = $data[0]->city;
    $con = mysql_connect("","","") or die(mysqli_connect_error());
    $db = mysql_select_db("",$con) or die(mysqli_connect_error());
    mysql_query("INSERT INTO Donors(Name,Blood,Mobile,E-Mail,Address,Country,State,City)VALUES('$name','$blood','$cell','$email','$address','$country','$state','$city')");

?>

在进行了一些实验之后,我将其范围缩小到问题在于我将数据发送到 PHP 脚本和/或 PHP 脚本接收数据的方式。任何人都可以寻找问题并纠正它吗?谢谢你!

注意事项:

  1. 我已经删除了 MySQL 用户名、密码、数据库名称和主机以保护隐私(显然)。
  2. 所有 8 个变量都是字符串格式。
4

1 回答 1

0

删除行:

httpPost.setHeader("JSONObject", jsonObject.toString());
httpPost.getParams().setParameter("JSONArray", jsonArray);

并将您的 JSON 内容放在 POST 正文中:

HttpEntity entity = new StringEntity(jsonArray.toString());
httpPost.setEntity(entity);

您还需要修改 PHP 脚本以正确处理 JSON 数组。

...
$name = $data[0]->name;
$blood = $data[0]->blood;
$cell = $data[0]->cell;
...
于 2013-08-28T05:59:46.720 回答