[英]Retrofit2: Modifying request body (Json) in OkHttp
我想在Android中使用JSON修改BODY的请求,但同时修改HEADER,从而能够获得响应服务。 现在我只有修改标题的代码,但是现在我必须执行相同的操作(修改标题)并将Json发送到正文以获得另一个Json答案
public String abc="Basic "+Login.enco;
public Service getClientService() {
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Authorization", abc)
.build();
return chain.proceed(newRequest);
}
}).build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.ROOT_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit.create(Service.class);
}
enter code here
try {
final List<String> lista = new ArrayList();
RestApiAdapter restApiAdapter = new RestApiAdapter();
Service service = restApiAdapter.getClientService();
Call<JsonObject> call = service.getDataUser();
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
JsonObject userJson = response.body().getAsJsonObject("LogOnResult");
Log.d("response2", userJson.get("Usuario").getAsString());
Log.d("response3", userJson.get("Token").getAsString());
Log.d("response4", userJson.get("TipoUser").getAsString());
Log.d("response5", userJson.get("IdUsuario").getAsString());
UserModel user = new UserModel(
userJson.get("Usuario").getAsString(),
userJson.get("Token").getAsString(),
userJson.get("TipoUser").getAsString(),
userJson.get("IdUsuario").getAsString()
);
}
@Override
public void onFailure(Call<JsonObject> call, Throwable t) {
Toast.makeText(getApplicationContext(), "No existe conexion", Toast.LENGTH_LONG).show();
}
});
}catch (Throwable e){
Toast.makeText(getApplicationContext(), "No existe conexion", Toast.LENGTH_LONG).show();
}
}
在Retrofit2中,您可以通过方法参数传递标头,查询,主体参数。 您只需要指定注释即可。 下面是一个例子。
Java示例:
@POST("adduser")
Call<User> addUser(@Header("Authorization") String header, @Body User userModel);
检查此链接以获取更多示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.