如何从 Retrofit2 获取字符串响应?

新手上路,请多包涵

我正在做 android,正在寻找一种方法来执行超级基本的 http GET/POST 请求。我不断收到错误消息:

 java.lang.IllegalArgumentException: Unable to create converter for class java.lang.String

网络服务:

 public interface WebService {
    @GET("/projects")
    Call<String> jquery();
}

然后在我的java中:

     Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://jquery.org")
       // .addConverterFactory(GsonConverterFactory.create())
        .build();

    WebService service = retrofit.create(WebService.class);
    Call<String> signin = service.jquery();

    Toast.makeText(this, signin.toString(), Toast.LENGTH_LONG).show();

我实际上只是在尝试使用 GET 请求查询 jquery.org/projects 并返回它响应的字符串。怎么了?

如果我尝试实现自定义转换器(我在网上找到了一些示例),它会抱怨我没有实现抽象方法 convert(F),而所有示例都没有实现。

谢谢。

原文由 Matthew Darnell 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
1 个回答

将 Retrofit2 和 ScalarsConverterFactory 添加到您的 Retrofit.Builder。

 adapterBuilder = new Retrofit.Builder()
               .addConverterFactory(ScalarsConverterFactory.create())
               .addConverterFactory(GsonConverterFactory.create());

要使用 ScalarsCoverter,请将以下依赖项添加到您的构建 graddle

 implementation 'com.squareup.retrofit2:converter-scalars:2.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0' //Adding Retrofit2

For API Call use:
    Call <String> *****

安卓代码:

 .enqueue(new Callback<String>() {
    @Override
    public void onResponse(Call<String> call, Response<String> response) {
        Log.i("Response", response.body().toString());
        //Toast.makeText()
        if (response.isSuccessful()){
            if (response.body() != null){
                Log.i("onSuccess", response.body().toString());
            }else{
                Log.i("onEmptyResponse", "Returned empty response");//Toast.makeText(getContext(),"Nothing returned",Toast.LENGTH_LONG).show();
            }
        }

原文由 Neyomal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题