gpt4 book ai didi

java - 如何使用改造在 api post 方法中将字符串作为主体传递?

转载 作者:行者123 更新时间:2023-11-30 04:59:53 25 4
gpt4 key购买 nike

我正在开发一个 android 应用程序,它发送用户输入的数据(通过编辑文本框)并调用 POST API 方法在该 API 的主体中发送此数据

考虑 API URL 是“htpps://xxxxx.com/forms/xxxxxx/reponse”

内容类型“Json(Application/json)”

内容看起来像:

{"answers":
"[{\"questionId\":\"r8554145065f6486d8a362bec92030a06\",\"answer1\":\"xxxxx\"},
{\"questionId\":\"rf516c5bf916e4d6d960a1f8abc82f33b\",\"answer1\":\"xxxx\"}]"}

我的问题是如何将这种类型的主体传递给改造,而不是内容中的“XXXXX”,而是一个接受用户输入的字符串?

最佳答案

您可能已经在使用接口(interface)进行 API 调用,这就是您将字符串正文添加到请求的地方。

public interface YourService{
@POST("forms/xxxxxx/reponse")
Call<Object> makeCall(@Body String body);
}

如果您还没有使用改造接口(interface),那么您可以使用现有的 RetrofitClient 创建上述接口(interface)的实例:

YourService service = retrofitClient.create(YourService.class);

现在您可以通过在服务实例上调用 makeCall 来访问 api:

service.makeCall(yourCustomString).enqueue(new Callback<Object>() {
@Override
public void onResponse(Response<MovieResponse> response) {...}

@Override
public void onFailure(Throwable t) {...}
});

您可以使用 String 构建器等构建“yourCustomString”,尽管我不建议这样做,但我会使用 ConverterFactory 并将您的 JSON 数据映射到 Java POJO。例如 Moshi (com.squareup.retrofit2:converter-moshi)。如果这样做,您可以使用 Java POJO 作为 @Body 注释属性,您只需在 POJO 上设置两个属性“questionId”和“answer1”,而不是构建 String。

如果你这样做,你最终会得到两个类:

public class Answer {
@Json(name = "questionId")
public String questionId;

@Json(name = "answer1")
public String answer1;
}

public class Body {
@Json(name = "answers")
private List<Answer> answers = new LinkedList<>();
}

现在,您只需创建一个 Body 对象,然后向 answers 属性添加任意数量的答案,然后使用 Body 对象作为改造界面上的参数。

注意:如果这样做,则必须在构建时将 MoshiConverterFactory 添加到 RetrofitClient。

关于java - 如何使用改造在 api post 方法中将字符串作为主体传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58425465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com