【问题标题】:How to write retrofit function for the following如何为以下内容编写改造功能
【发布时间】:2020-09-16 09:40:26
【问题描述】:

如何编写改造函数来接收以下 api 调用。我只调用了改造函数,我们直接在 params 中而不是在 body form-data 中传递参数,所以我不知道该怎么做。

虽然一点都不对,这是我试过的:

这是我的主要活动-

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();
            }
        });
    }

这是我的 API 接口类-

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;
    }
}

我们将不胜感激和感谢任何帮助。

【问题讨论】:

  • 给我们你所有的 json 对象
  • json 对象简单如下:
  • 你想用 java 或 cotlin 编码吗?
  • java @SideegMoHammed
  • @SideegMoHammed [ { "u_id": "15", "customer_id": "","error_code:"" } ]

标签: java android retrofit2 form-data


【解决方案1】:
@POST("/api/xyz/login")
    fun getData(@Body params: JsonObject): JsonObject


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

【讨论】:

    【解决方案2】:

    您可以使用此方法在 getData() 方法中将用户名和密码作为 pram 发送,并将 json 修改为用户列表

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

    【讨论】:

    • 我将在哪里传递参数用户名和密码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2021-12-08
    • 1970-01-01
    • 2022-06-14
    • 2010-11-24
    • 2022-01-10
    相关资源
    最近更新 更多