gpt4 book ai didi

php - 使用 JSON 数据从 Android 发送数据到服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:04 25 4
gpt4 key购买 nike

我正在尝试将数据从 Android 应用程序发送到 Web 服务器。我的 android 应用程序运行成功。但是 php 代码有问题。

<?php
$json = $_SERVER['HTTP_JSON'];
echo "JSON: \n";
var_dump($json);
echo "\n\n";

$data = json_decode($json,true);
echo "Array: \n";
var_dump($data);
echo "\n\n";

$name = $data['name'];
$pos = $data['position'];
echo "Result: \n";
echo "Name : ".$name."\n Position : ".$pos;
?>

错误:

Notice: Undefined index: HTTP_JSON in C:\wamp\www\jsonTest.php on line 2
( line 2 : $json = $_SERVER['HTTP_JSON']; )

我找不到这些问题的原因。你能帮助我吗 ?(注意:我使用的是 wamp 服务器)

这是相关的 Android 源代码:

// Create a new HttpClient and Post Header 
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("10.0.2.2:90/jsonTest.php";);

JSONObject json = new JSONObject();
try {
json.put("name", "flower");
json.put("position", "student");
JSONArray postjson=new JSONArray();
postjson.put(json);
httppost.setHeader("json",json.toString());
httppost.getParams().setParameter("jsonpost",postjson);
System.out.print(json);
HttpResponse response = httpclient.execute(httppost);

if(response != null)
{
InputStream is = response.getEntity().getContent();

BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();

String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
text = sb.toString();
}
tv.setText(text);

}catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}

此代码在 android 端成功运行(无错误)。但是php端有问题..谢谢。

最佳答案

这不是您的 JSON 所在的位置:

$json = $_SERVER['HTTP_JSON'];

你的意思可能是:

$json = $_POST['HTTP_JSON'];

HTTP_JSON 是您在 Android 应用中为 JSON 提供的 POST 变量名称。

其余错误源于 json_decode 失败,因为您没有成功从请求中读取 JSON 数据。您可以检查 json_decode 的响应以检查它是否成功,如下所示:

$data = json_decode($json,true);
if( $data === NULL)
{
exit( 'Could not decode JSON');
}

最后,将 true 作为第二个参数传递给 json_encode 意味着它将返回一个关联数组,因此您可以像这样访问元素:

$name = $data['name'];
$pos = $data['position'];

确保你read the docs对于 json_encode,以便您了解它在做什么。

编辑:您的问题是您通过错误的名称访问了$_POST 参数。你应该使用:

$json = $_POST['jsonpost'];

由于以下行将参数命名为“jsonpost”:

httppost.getParams().setParameter("jsonpost",postjson);

关于php - 使用 JSON 数据从 Android 发送数据到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8317553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com