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

截取json请求的响应

郑茂勋
2023-03-14

我正在开发一个与我编写的RESTful网络服务通信的Android应用程序。在GET方法中使用Volley非常简单,但是我不能把我的手指放在POST方法上。

如何从我的post请求响应中获取字段这是我的响应

enter code here

"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkFXOFR"
IDgGvCSwgGU2sGL1-zdEyP9HqIpPFGnJwoRv-zDE_7Kp7s8NG4jrrquAJNmbQapMn- 
jgNbb0FXqiDOD9keaAjwJ0GyEZqxM9iLTI2GZykaIhm- 
VPpIMnC25b1Ieoqnypw2T9oyTmzFNwGYDefN_x80Go3unlzA_- 
_sAVNTGSTYGgxtIdjmsmbH8k6HKHA",

"token_type": "bearer",

"expires_in": "3600",

"resource": "urn:microsoft:userinfo",

我想只有"访问令牌"内容

这是我的密码

enter code here
private void userLogin() {
    username = editTextUsername.getText().toString().trim();
    password = editTextPassword.getText().toString().trim();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    if(response.trim().equals("success")){
                        openProfile();

                    }else{
                        Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
                        token=response;





                    }
                }


            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG ).show();
                }
            }

            ){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> map = new HashMap<String,String>();
            map.put(KEY_USERNAME,username);
            map.put(KEY_PASSWORD,password);
            return map;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

请帮帮我?!

共有1个答案

哈和惬
2023-03-14

String创建JSONObject,并使用相应的键从JSONObject获取值。在onResponse方法中使用此代码从响应字符串获取令牌:

JSONObject obj = new JSONObject(response);
String token = obj.getString("access_token");
String tokenType = obj.getString("token_type");
String expiresIn = obj.getString("expires_in");
String resource = obj.getString("resource");

如果您有RESTfulWeb服务,那么改型是一个不错的选择。它是一个类型安全的HTTP客户端。它将自动将您的响应转换为Java对象。您不需要手动转换它。

 类似资料:
  • 我是iOS和Swift的新手,我正在尝试使用AlamoFire3.4.0来做一个web请求。当我的请求成功时,一切都很好。但是,如果我的请求失败,服务器将返回300或更大的状态代码,以及响应体中的一些JSON,其中包含关于请求失败原因的更多信息。例如,我正在与之交谈的API要求对每个请求进行身份验证。如果身份验证由于某种原因失败,我将返回401,响应体中的JSON将为: 我发出此请求的代码如下所示

  • 我想在我的代码中使用Volley,我应该在下面的响应中使用哪种请求类型,我不明白。URL:::http://localhost/api/product/read.php

  • 问题内容: 我有一个包含表单(帖子)的html。单击某些提交按钮时,我会收到JSON响应。 如何获取此JSON? 如果我不截取请求,则json将显示在Web视图上,所以我想应该使用(我正在使用API​​ 12),但是我不知道如何在其中获取json。 还是有更好的方法,例如拦截响应而不是请求? 谢谢 问题答案: 您应该重写的方法

  • 用简单的话来说,我想发送这个数据到服务器,使用Volley Post Request。 它有一个整数和一个字符串,我得到的响应是Jsonarray 我尝试过以下方法,但都不管用 > 因为它是json数组请求,我不能在参数中发送数据,因为第三个参数只需要JsonArray,我必须发送JsonObject,所以保持为null 我不能把它放在中,因为值的1是整数,并且它只接受字符串 getparams(

  • 一、拦截请求 mitmproxy的强大功能是拦截请求。拦截的请求将暂停,以便用户可以在将请求发送到服务器之前修改(或丢弃)该请求。mitmproxy的set intercept命令配置拦截。i默认情况下,该命令绑定到快捷方式。 通常不希望拦截所有请求,因为它会不断中断您的浏览。因此,mitmproxy希望将流过滤器表达式作为set intercept选择性拦截请求的第一个参数。在下面的教程中,我们

  • 问题内容: 我通过JavaScript收到了带有AJAX请求的JSON响应。 这是响应: 我的目标是获取内容: json变量是我的情况下的数据。因此,我尝试了: 但是我得到一个空字符串。 关于如何访问字符串的任何想法? 先感谢您。 问题答案: 您是否首先解析json? 比阅读