【问题标题】:sending data from android to php using json使用json将数据从android发送到php
【发布时间】:2013-11-03 15:11:47
【问题描述】:

嘿,我试图将数据从我的 android 应用程序发送到 Web 服务器并使用 mysql 将其发送到数据库,虽然它似乎没有任何错误,但我的代码不起作用

android java代码:

                      String categorys=category.getText().toString();
          String authors = author.getText().toString(); 
          String quess = question.getText().toString(); 
          String anss = answer.getText().toString();    

                    try {
                        JSONObject json = new JSONObject(); 
                        json.put("category",categorys); 
                        json.put("ques",quess);
                        json.put("ans",anss);
                        json.put("authors",authors);
                        postData(json);


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

                }
            });     
        }

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

            try { 
                HttpPost httppost = new HttpPost("http://shlomo.webuda.com/androidtomy.php");

                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();
            } 




                }`

php代码

mysql_connect("something","something","something");
mysql_select_db("something");
 $json = $_SERVER['HTTP_JSON'];
 echo "JSON: \n";
 var_dump($json);
 echo "\n\n";

 $data = json_decode($json,true);
 var_dump($data);




$category=$data['category'];
$author=$data['authors'];
$question=$data['ques'];
$answer=$data['ans'];
$sql = 'INSERT INTO Ques(Ques_Author, Ques_Question,Ques_Answer,Ques_Category,Ques_Approve) values("category","author","question","answer","0")';
mysql_query($sql);

}    

?>

【问题讨论】:

  • 定义“不起作用”
  • 数据库中什么都没有,插入查询什么也没有发送..
  • 当您的值被命名为 json 并且是 POST 变量时,您希望 $_SERVER['HTTP_JSON'] 做什么?那不应该是$_POST['json']吗?
  • 你真的需要学习基本的 PHP ... values('foo', 'bar') 不会插入你提交的数据——你的值是硬编码的字符串。同样,您几乎肯定会受到SQL injection attacks 的攻击。
  • $json=$_POST['json']; ?这也不起作用

标签: java php android mysql json


【解决方案1】:

如 cmets 中所述,PHP 文件有几个问题。请尝试以下方法:

mysql_connect("something","something","something");
mysql_select_db("something");


$json = $_REQUEST['json'];
echo "JSON: \n";
var_dump($json);
echo "\n\n";

$data = json_decode($json,true);
var_dump($data);

$category=$data['category'];
$author=$data['authors'];
$question=$data['ques'];
$answer=$data['ans'];
$sql = "INSERT INTO Ques(Ques_Author, Ques_Question,Ques_Answer,Ques_Category,Ques_Approve) values($category,$author,$question,$answer,0)";
mysql_query($sql);

你也不应该使用 mysql_query 函数。您应该使用 mysqli_**-functions 或 PDO (http://php.net/manual/en/book.pdo.php)。 mysql_query 自 PHP5.5 起已被弃用,这是有充分理由的。尤其是当您将看似正确的 url 发布到上述 php 文件时。

如果您仍然有问题,请提供 $json 变量的内容,以及来自您的 Java 代码的请求副本

【讨论】:

  • 好的,如果您需要我们能够回答,您需要向我们提供 PHP json 变量输出的内容以及从请求到 PHP 服务器的副本。
猜你喜欢
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2016-02-22
相关资源
最近更新 更多