数组作为改造中的参数

时间:2019-02-05 19:16:13

标签: android arrays retrofit

我在改型中传递参数时遇到问题,我的问题是需要将int数组([3,1,2])作为带有改型2的POST方法中的参数之一发送,其他参数作为字符串。 (例如:提示-“ 10”,金额-“ 100”,服务ID-[3,1,2])。如何发送示例中的上述参数。

2 个答案:

答案 0 :(得分:1)

您可以使用ArrayList,例如:

@FormUrlEncoded
    @POST("service_name") 
       void functionName(
            @Field("yourarray[]") ArrayList<String> learning_objective_uuids, @Field("user_uuids[]") ArrayList<String> user_uuids, @Field("note") String note,
            Callback<CallBackClass> callback
        );

您可以遵循此link

或者您可以像这样使用JSONObject:

@POST("demo/rest/V1/customer")
Call<RegisterEntity> customerRegis(@Body JsonObject registrationData);

registrationData:

private static JsonObject generateRegistrationRequest() {
        JSONObject jsonObject = new JSONObject();
        try {
            JSONObject subJsonObject = new JSONObject();
            subJsonObject.put("email", "abc@xyz.com");
            subJsonObject.put("firstname", "abc");
            subJsonObject.put("lastname", "xyz");

            jsonObject.put("customer", subJsonObject);
            jsonObject.put("password", "password");

        } catch (JSONException e) {
            e.printStackTrace();
        }
        JsonParser jsonParser = new JsonParser();
        JsonObject gsonObject = (JsonObject) jsonParser.parse(jsonObject.toString());
        return gsonObject;
    }

答案 1 :(得分:0)

您可以定义一个反映POST正文结构的对象:

@POST("/pathtopostendpoint")
Call<ResponseObject> postFunction(@Body final RequestBody body);

RequestBody定义如下(如果使用GSON转换器,请使用@SerializedName调整字段的命名):

class RequestBody {

    String tips;
    String amount;
    int[] serviceIds;

    RequestBody(final String tips, final amount String, final int[] serviceIds) {
        this.tips = tips;
        this.amount = amount;
        this.serviceIds = serviceIds;
    }
}

并像这样构建请求调用:

final Call<ResponseObject> call = retrofitService.postFunction(
    new RequestBody("10", "100", new int[]{ 3, 1, 2 })
);