我在使用Android Volley时遇到问题。我的应用程序需要2个步骤进行调用。首先我通过 HTTP POST 进行调用,以提交电子邮件和密码(如果经过验证),然后提供令牌访问权限。解析用户数据,因此应用程序发送令牌,服务器返回已解析的数据。我使用的所有请求都是 StringRequest 齐射。
问题是,我在第二次调用中看不到返回的字符串,但是第一次调用是可以的。令牌是从返回的第一次调用中提供的,并且我转换为JSONObject,所以我可以解析它以获取纯字符串令牌。但是如果我为第二次调用静态提供了令牌(不使用从函数返回的令牌,而是使用普通令牌),请求还可以。第一次和第二次调用都成功返回了我想要的数据。
这是我的片段功能,用于将字符串转换为JSONObject
private String json_login(String data){
try{
String token = null;
JSONObject object = new JSONObject(data);
if(!object.getBoolean("error")){
token = object.getString("jwt");
System.out.println(token);
return token;
}
}catch (JSONException e){
Log.e(TAG,e.getMessage());
}
return null;
}
排球班
public class APINetworkRequest {
private static final int CODE_GET_REQUEST = 1024;
private static final int CODE_POST_REQUEST = 1025;
int REQ_CODE;
public APINetworkRequest(final Context context,final FetchDataListener listen,final String urli,int REQUEST_CODE,
HashMap<String,String> params){
if(REQUEST_CODE == CODE_GET_REQUEST){
GET_REQUEST(context,listen,urli);
}
if(REQUEST_CODE == CODE_POST_REQUEST){
POST_REQUEST(context,listen,urli,params);
}
}
private void GET_REQUEST(final Context context,final FetchDataListener listen,final String url){
}
private void POST_REQUEST(final Context context, final FetchDataListener listen, final String url, HashMap<String,String> param){
if(listen !=null){
listen.onFetchStart();
}
StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (listen != null) {
listen.onFetchComplete(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (error instanceof NoConnectionError){
listen.onFetchFailure("Network Connectivity Problem!");
}else if (error.networkResponse!=null && error.networkResponse.data !=null){
VolleyError volleyError = new VolleyError(new String(error.networkResponse.data));
}
}
}){
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded; charset=UTF-8";
}
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return param;
}
};
RequestQueueVolley.getInstance(context).addToRequestQueue(stringRequest.setShouldCache(false));
}
}
预先感谢