簡體   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