当前位置: 首页 > 知识库问答 >
问题:

使用截取在android中检索Json对象

隆康平
2023-03-14

试图从我的php api中获取一个值,在android上,使用截取。。。我的api运行良好,返回了我想要的值,但在我的android上,我似乎可以将值保存在一个变量上。

这是我的php脚本

<?php

if($_SERVER['REQUEST_METHOD']=='POST'){

$titu = $_POST['titulo'];
$id_use = $_POST['id_user'];
$difi = $_POST['dificuldade'];


$user = "root";
$pass = "";
$host= "localhost";
$dbname="check";

$con = mysqli_connect($host,$user,$pass,$dbname);
$sql="insert into trilhos(titulo,id_user,dificuldade) 
values('".$titu."','".$id_use."','".$difi."');";


$r = mysqli_query($con,$sql);

$id_trilho =mysqli_insert_id($con);

$result = array();
echo json_encode(array("result"=>$id_trilho));

mysqli_close($con);
}

在我的android studio上,我尝试像这样获取值,我发送3个值插入到数据库中,然后我想将我插入的行的id返回到android。我看过很多关于stackoverflow的答案,但我似乎无法理解和解决我的问题。

public void insert(String titulo, String id_trilho, String dif) {
    url = "http://192.168.1.68/loginsignup/insertTrilho.php?titulo=" + titulo +"&id_user="+ id_trilho+ "&dificuldade=" + dif + "";
    Log.i("Http", "" + url);
    RequestQueue requestQueue = Volley.newRequestQueue(InserirTrilho.this);
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                JSONArray jsonArray = jsonObject.getJSONArray("result");
                JSONObject jsonObject1 = jsonArray.getJSONObject(0);
                String id = jsonObject1.getString("id_trilho");
                Toast.makeText(InserirTrilho.this, id, Toast.LENGTH_SHORT).show();


                SharedPreferences shared_id = getSharedPreferences("Mytrilho", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = shared_id.edit();
                editor.putString("id", id);


                editor.commit();
                Intent intent = new Intent(InserirTrilho.this, MapsActivity.class);
                startActivity(intent);

            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(InserirTrilho.this, "Dados Errados", Toast.LENGTH_SHORT).show();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("HttpError","erro"+error);
        }

    });
    requestQueue.add(stringRequest);
}

不断得到一个抛出的异常,有人能帮帮我吗,提前谢谢你

共有1个答案

端木令雪
2023-03-14

问题是,url是一种类型的Get请求,但java中的方法请求是类型的POST,因此您需要使用asBodyso作为请求的一部分发送数据

了解如何发送POST请求使用齐射与字符串体?

如前所述,您的响应是jsonobject不是数组,所以请使用

JSONObject jsonObject = new JSONObject(response);
String id = jsonObject.optString("result");    

而不是

JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("result");
JSONObject jsonObject1 = jsonArray.getJSONObject(0);
String id = jsonObject1.getString("id_trilho");

或者得到你想要的然后用

$result = array();
$result["result"]= array();
array_push($result["result"],array("id_trilho"=>$id_trilho)); // assume $id_trilho =0
echo json_encode($result);
// output {"result":[{"id_trilho":0}]}

或者干脆用

$id_trilho = 0;
$result = array();
array_push($result,array("id_trilho"=>$id_trilho));
echo json_encode($result);
// output [{"id_trilho":0}]
// then use JSONArray jsonArray = new JSONArray(response);
// JSONObject jsonObject1 = jsonArray.getJSONObject(0);
// String id = jsonObject1.getString("id_trilho");
 类似资料:
  • 问题内容: 我的手机APP以文本模式完美下载内容。下面是执行此操作的代码。我将其称为Communicator类和exectueHttpGet: 我要讲的是(URL的源代码): 该响应是一个字符串。在服务器上,它作为JSON对象输出(与PHP一起),现在在我的Android PHP中,我想将此字符串转换为JSON。这可能吗? 问题答案: 您收到的是从附加到a 并最终转换为的一系列字符-因此,结果是可

  • 问题内容: 我有成千上万个包含多个JSON对象的文本文件,但是不幸的是,这些对象之间没有分隔符。对象存储为字典,它们的某些字段本身就是对象。每个对象可能具有可变数量的嵌套对象。具体来说,一个对象可能看起来像这样: 并在文本文件中串联了数百个这样的对象而没有分隔符。这意味着我既不能使用也不可以。 关于如何解决此问题的任何建议。是否有已知的解析器可以执行此操作? 问题答案: 这将从字符串中解码您的JS

  • 我是JSON的新手。我想使用JSON检索两个地方之间的距离。我想从位于“legs”数组中的“Distance”对象获取“text”(距离b/w两个地方),而“legs”数组又位于“routes”数组中。链接(http://maps.googleapis.com/maps/api/directions/json?origin=adoor&destination=thiruvananthapuram%

  • 问题内容: 我有要解析的JSON文件。JSON文件(“ myfile”)的格式如下: 我想从语言级别检索键2的值(ŚrednioZaawansowany)。 接下来做什么?我如何迭代呢? 问题答案: 也许您没有使用Java库的最新版本的JSON。 已有很长时间没有更新,而2个月前已更新。 可以在GitHub上找到,这是其仓库的链接:https : //github.com/douglascrock

  • 我在后端java中使用REST API,通过JSON与前端的javascript进行通信。我有一个名为的实体,它有一些私有字符串属性。还有一个名为的类,包含所有以前插入的。我能够从包含所有私有字符串的中检索包含所有对象的列表。现在,我在类中添加了一个列表,其中是一个具有简单私有字符串属性的类。 我应该如何使用REST API从一些对象中检索的列表?我应该创建一个新的路由来接收JSON并发回一个的列

  • 所以我试图为我的第一个Vue项目制作一个CRUD页面,但是我一直出错,找不到一个好的解决方案或有效的例子。 当我通过邮递员发布此请求时: 我从我的数据库中得到有针对性的结果,但是当我试图从我的vue页面中这样做时,我似乎无法正确地得到它。我一直收到一个401未经授权的错误,但我想我确实有一个带有令牌的标题。 我的vue页面: 我的PartyDataService: 我的Http公用程序: 我尝试在