Как написать модифицированную функцию для следующего

#java #android #retrofit2 #form-data

#java #Android #retrofit2 #форма-данные

Вопрос:

Как я могу написать модифицированную функцию для получения следующего вызова API. Я вызывал только функции модернизации, где мы передаем параметры непосредственно в params, а не в форме тела-data, поэтому я не знаю, как это сделать.

введите описание изображения здесь

Хотя это совсем не так, это то, что я пробовал :

Это мой MainActivity-

 private void login(String username, String password) {

        Call<User> call = student_signin.apiInterface.studentLogin("json",username, password);
        call.enqueue(new Callback<User>() {

            @Override
            public void onResponse(Call<User> call, Response<User> response) {

                if (response.body().getError_code() == "401") {

                    Toast.makeText(student_signin.this, response.body().getError_message(), Toast.LENGTH_SHORT).show();

                } else if (!response.body().getU_id().isEmpty()){
                    Toast.makeText(student_signin.this, "user signed in successfully", Toast.LENGTH_SHORT).show();

                }
            }
            @Override
            public void onFailure(Call<User> call, Throwable t) {
                Toast.makeText(student_signin.this,t.getMessage(),Toast.LENGTH_LONG).show();
            }
        });
    }
  

Это мой класс APIinterface-

 public interface APIinterface {

    @FormUrlEncoded
    @POST("login")
    Call<User> studentLogin(@Query("format") String format, @Field("username") String username, @Field("password") String password);

}
  

Это мой класс ApiClient-

 public class APIclient {

    public static final String BASE_URL = "https://www.example.com/api/xyz/";
    public static Retrofit retrofit = null;

    public static Retrofit getApiClient()
    {
        if(retrofit==null)
        {
            //   Gson gson = new GsonBuilder().setLenient().create();

            retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
        }
        return retrofit;
    }

}
  

И это мой класс модели-

 public class User {

    @Expose
    @SerializedName("u_id")
    private String u_id;

    @Expose
    @SerializedName("customer_id")
    private String customer_id;

    @Expose
    @SerializedName("error_code")
    private String error_code;

 public String getU_id() {
        return u_id;
    }

    public String getCustomer_id() {
        return customer_id;
    }

    public String getError_code() {
        return error_code;
    }
}
  

Любая помощь была бы с благодарностью принята.

Комментарии:

1. предоставьте нам весь ваш объект json

2. Объект json прост следующим образом:

3. вы хотите кодировать на Java или cotlin?

4. java @SideegMoHammed

5. @SideegMoHammed [ { «u_id»: «15», «customer_id»: «»,»error_code:»» } ]

Ответ №1:

 @POST("/api/xyz/login")
    fun getData(@Body params: JsonObject): JsonObject


client.getData(JsonObject().apply {
            addProperty("advice_id", adviceId)
            addProperty("content", content)
        })
  

Ответ №2:

вы можете использовать этот метод для отправки имени пользователя и пароля в виде pram в методе getData() и перезаписи json в виде списка пользователей

 @GET("/api/xyz/login")
Call<List<User>> getData(@Query("user_name") String userName,@Query("password") String password);
  

Комментарии:

1. И куда я передам параметры username и password?