#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?