JsonObjectRequest를 사용하여 기본 인증으로 사용자 이름과 비밀번호를 보내려고합니다. getHeaders()
메서드를 재정의하려고 시도했지만 작동하지 않았습니다. 여기에 내 코드입니다 : 내가 Base64.NO_WRAP
사용Basic Auth 헤더가있는 Volley JsonObjectRequest가 작동하지 않습니다.
public class NewPostRequest extends JsonObjectRequest {
public NewPostRequest(JSONObject requestBody) {
super(Method.POST, APIConstants.CREATE_POST_URL, requestBody, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
long postId = response.getLong("id");
NewPostResponse newPostResponse = new NewPostResponse(postId);
EventBus.getDefault().post(newPostResponse);
} catch (JSONException e) {
e.printStackTrace();
EventBus.getDefault().post(new NewPostResponse(-1));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
EventBus.getDefault().post(new NewPostResponse(-1));
}
});
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
String credentials = "****:***********************";
String auth = "Basic "
+ Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
headers.put("Content-Type", "application/json; charset=utf-8");
headers.put("Authorization", auth);
return headers;
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
JSONObject jsonObject = null;
try {
String data = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
jsonObject = new JSONObject(data);
} catch (UnsupportedEncodingException | JSONException e) {
e.printStackTrace();
}
return Response.success(jsonObject, HttpHeaderParser.parseCacheHeaders(response));
}
}
오류 :
com.android.volley.AuthFailureError
을 그리고 난 Base64.DEFAULT
을 사용했을 때
java.lang.IllegalArgumentException: Unexpected char 0x0a at 46 in header value: Basic *************************
참고 :이 웹 서비스는 구글 우체부에 노력하고 있습니다 수단.
서버 로그를 확인 했습니까? – Krish
문제가 해결되었습니다. –