我正在开发一个与我编写的RESTful Web服务进行通信的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",
我想只有"访问令牌"含量
这是我的代码
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);
}
请帮帮我?!
答案 0 :(得分:0)
从JSONObject
创建String
,并使用相应的密钥从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");
如果您有RESTful Web服务,那么Retrofit是一个不错的选择。它是一个类型安全的HTTP客户端。它会自动将您的响应转换为Java 宾语。您无需手动转换它。