gpt4 book ai didi

java - 我如何在 Retrofit2 中使用 jsonapi?

转载 作者:太空狗 更新时间:2023-10-29 15:44:53 25 4
gpt4 key购买 nike

我需要使用jsonapi在改造中2。我尝试使用 moshi-jsonapi但我不能使用 moshi ConverterFactory。

token 模型.java

@JsonApi(type = "tokens")
public class TokenModel extends Resource {
@Json(name = "cell_phone")
public String cellPhone;
}

测试服务.java:

public interface TestService {
@POST("token")
Call<TokenModel> newOtp(@Body TokenModel tokenModel);
}

测试提供者.java:

public class TestProvider {
private TestService testService;

public TestProvider() {
OkHttpClient httpClient = new OkHttpClient();
Retrofit refRetrofit = new Retrofit.Builder()
.baseUrl(ClientConfigs.BASE_URL)
.client(httpClient)
.addConverterFactory(MoshiConverterFactory.create())
// .addConverterFactory(????????????????????????????)
.build();
testService = refRetrofit.create(TestService.class);
}

publicTestService getTestService() {
return testService;
}
}

如果我使用 MoshiConverterFactory 会出错 Unable to create converter for class com.xxx.xxx.model.TokenModel!

使用改造:

TsetProvider testProvider = new TestProvider();
TestService testService = testProvider.getTestService();

TokenModel tokenModel = new TokenModel();
tokenModel.cellPhone = "121212129999";

Call<TokenModel> call = testService.newOtp(tokenModel);
call.enqueue(new Callback<TokenModel>() {
@Override
public void onResponse(Call<TokenModel> call, Response<TokenModel> response) {
}

@Override
public void onFailure(Call<TokenModel> call, Throwable t) {
}
});

最佳答案

来自 moshi-jsonapi将库工厂添加到 moshi 实例所需的文档:

// First create the factory
JsonAdapter.Factory jsonApiAdapterFactory = ResourceAdapterFactory.builder()
.add(TokenModel.class)
.build();

// Create a custom moshi instacne
Moshi moshi = new Moshi.Builder()
.add(jsonApiAdapterFactory)
.build();

// Add the custom moshi instance to Retrofits Converter Factory
Retrofit refRetrofit = new Retrofit.Builder()
.baseUrl(ClientConfigs.BASE_URL)
.client(httpClient)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build();

这应该可以解决问题。

关于java - 我如何在 Retrofit2 中使用 jsonapi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40608078/

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