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