我正在开发一个与我编写的 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/