如何使用 android 中的改造将参数和值传递给 post api?
How can I pass the param and value to post api using retrofit in android?
@Headers("Content-Type: application/json")
@POST("answer")
fun sendAnswer(@Header("token") token :String, @Body answer: SendAnswerModel):Call<SendAnswerResultModel>
这是我的模型class
data class Vote2019Answer(
@SerializedName("question_id") @Expose val id: Int,
@SerializedName("answer") @Expose val answer: String)
另一个模型class
data class SendAnswerModel(
@SerializedName("answer") @Expose val answer: List<Vote2019Answer> )
您可以使用 @Body 传递 json object / json array
,方法是将 json model
转换为 POJO
(使用 GSON
)。
检查 this !
试试下面的方法。
您的 API 端点
@POST("url")
Call<ResponseBody> yourAPi(@Body JSONArray jsonArray);
并且API调用使用参数数据
String[] answer = {"aaa","bbb","ccc"}
JSONArray jsArray= new JSONArray();
try {
for(int i = 0; i < answer.length; i++) {
JSONObject object = new JSONObject();
object.put("question_id",i+1);
object.put("answer",answer[i]);
jsArray.put(object);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// here you can call your api
Call<ResponseBody> call = yourApiService.yourAPi(jsArray);
// ........
@Headers("Content-Type: application/json") @POST("answer") fun sendAnswer(@Header("token") token :String, @Body answer: SendAnswerModel):Call<SendAnswerResultModel>
这是我的模型class
data class Vote2019Answer(
@SerializedName("question_id") @Expose val id: Int,
@SerializedName("answer") @Expose val answer: String)
另一个模型class
data class SendAnswerModel(
@SerializedName("answer") @Expose val answer: List<Vote2019Answer> )
您可以使用 @Body 传递 json object / json array
,方法是将 json model
转换为 POJO
(使用 GSON
)。
检查 this !
试试下面的方法。
您的 API 端点
@POST("url")
Call<ResponseBody> yourAPi(@Body JSONArray jsonArray);
并且API调用使用参数数据
String[] answer = {"aaa","bbb","ccc"}
JSONArray jsArray= new JSONArray();
try {
for(int i = 0; i < answer.length; i++) {
JSONObject object = new JSONObject();
object.put("question_id",i+1);
object.put("answer",answer[i]);
jsArray.put(object);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// here you can call your api
Call<ResponseBody> call = yourApiService.yourAPi(jsArray);
// ........