繁体   English   中英

Retrofit2:在OkHttp中修改请求正文(Json)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM