Если я войду на свой сайт, я получу куки. Этот файл cookie действителен один год, и я хочу, чтобы он был реализован в моем приложении для Android. С этим cookie я могу получить данные JSON, и он работает в Postman с расширением Interceptor. Но в Android я не могу заставить его работать. Я попробовал его на самых разных формах:
Retrofit2:Получить JSON с Cookie Android
public void GetCaregiver(){
CookieInterceptor interceptor = new CookieInterceptor();
interceptor.setSessionCookie("eyJpdiI6IjVcL1d6MEhLaGNZV3V2MFdVdFRtRVN3PT0iLCJ2YWx1ZSI6IldZWU42cUZQblcwejlDMk5LVllYOENXSThmVk9UUFIzaStxclZoUTFIRGlMazFlUzdjVDhFcTVxRllwMERncFFLZTVNQlQ0VUQ2SG5BSUE3TzJcL0Vrdz09IiwibWFjIjoiNDk3YmY3ZmE0NzA2Nzk1NzMwNTM0NDViOGNjNDllN2ZmZmYyNmNhNTdjNWYwOWYwYTIzZmI2YmI5OTc3OWZjNiJ9");
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(zorggemakURL)
.callFactory(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
RESTInterface service = retrofit.create(RESTInterface.class);
Call<List<Caregiver>> call = service.getCaregivers();
call.enqueue(new Callback<List<Caregiver>>() {
@Override
public void onResponse(Call<List<Caregiver>> call, retrofit2.Response<List<Caregiver>> response) {
Log.d("Response", response.toString());
}
@Override
public void onFailure(Call<List<Caregiver>> call, Throwable t) {
Log.d("Response", t.toString());
}
});
}
Volley:
public void GetCaregiver() {
// the request
String url = zorggemakURL + "api/user/overview";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,
url,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// response
Log.d("Response", response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
Log.d("ERROR", "error => " + error.toString());
}
}) {
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded";
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Accept", "application/json");
String creds = String.format("%s:%s", "orlandosmits", "test123");
String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
headers.put("Cookie", cookie);
headers.put("Authorization", auth);
return headers;
}
};
Volley.newRequestQueue(context).add(request);
}
Я всегда получите страницу HTML обратно и не данные в формате JSON. У кого-нибудь есть идея?