android - 使用 volley 获取响应 json 请求

标签 android

我正在开发一个与我编写的 RESTful 网络服务通信的 Android 应用程序。将 Volley 用于 GET 方法非常棒且简单,但我无法将手指放在 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",

我只想拥有“访问 token ”内容

这是我的代码

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

请帮帮我?!

最佳答案

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

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");

如果您有 RESTful 网络服务,那么 Retrofit是个不错的选择。它是一个类型安全的 HTTP 客户端。它会自动将您的响应转换为 Java 目的。您不需要手动转换它。

关于android - 使用 volley 获取响应 json 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372965/

相关文章:

android - 如何将宽度设置为 "fill parent"的 android 按钮中的图标和文本居中

android - Robolectric 为具有换行内容高度的 View 返回 0 高度

android - 备份管理服务 : Unable to finalize restore

android - 查看 setBackground 与 drawable 删除海拔的阴影

android - Unity android 项目抛出 "Your hardware does not support this application sorry"错误

android - 除了使用 Google 的应用内计费之外,还有其他方法可以避免发布私有(private)信息吗?

android - 如何在呈现 SplashScreen 期间运行 MainActivity

android - 如何将图像从 url 加载到小部件的 android 远程 View 中

android - 钛/Appcelerator 合金无法正​​确检测方向变化

android - 为应用程序实现不同的 Material 主题。基于 Material Design 的猫头鹰应用