当前位置: 首页 > 知识库问答 >
问题:

如何在android中不使用GSON或任何其他库的情况下使用改型以字符串形式获得响应[重复]

饶明亮
2023-03-14

https://api.github.com/users/username

但是我不知道如何以字符串的形式获得响应,以便使用字符串解析并获得JSONObject

使用的改型版本:

public interface GitHubService {
        @GET("/users/{user}")
        public String listRepos(@Path("user") String user,Callback<String> callback);
    }
GitHubService service = retrofit.create(GitHubService.class);
        service.listRepos("username", new Callback<String>() {
            @Override
            public void onResponse(Response response) {
                System.out.println(response.toString());
            }

            @Override
            public void onFailure(Throwable t) {

            }
        });
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class java.lang.String. Tried:
    * retrofit.ExecutorCallAdapterFactory
            at retrofit.Utils.resolveCallAdapter(Utils.java:67)
            at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:49)

任何帮助都将不胜感激。

共有1个答案

唐俊英
2023-03-14

**更新**一个标量转换器已经被添加到改型中,它允许字符串响应,比我下面的原始答案更简洁。

示例接口--

public interface GitHubService {
    @GET("/users/{user}")
    Call<String> listRepos(@Path("user") String user);
}

ScalarsConverterFactory添加到您的改型生成器中。注意:如果使用ScalarsConverterFactory和另一个工厂,请首先添加scalars工厂。

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(BASE_URL)
    .addConverterFactory(ScalarsConverterFactory.create())
    // add other factories here, if needed.
    .build();
implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'
public interface GitHubService {
    @GET("/users/{user}")
    Call<ResponseBody> listRepos(@Path("user") String user);
}
GitHubService service = retrofit.create(GitHubService.class);
Call<ResponseBody> result = service.listRepos(username);
result.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Response<ResponseBody> response) {
        try {
            System.out.println(response.body().string());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onFailure(Throwable t) {
        e.printStackTrace();
    }
});
 类似资料:
  • 我的JSON: 上面的代码是什么我有treid,所以可以任何一个请帮助我获得整个响应不仅是父类别。

  • 如何将此Json响应转换为改装bean我得到了Gson错误,就像使用JsonReader一样。setLenient(true)在第1行第1列路径接受格式错误的JSON$ api调用为 字符串CATEGORY\u API=“”https://api.callingservice.com"; 请帮助我解决这个问题,如何将Json响应转换为Bean,我的Bean类如下

  • 问题内容: 如何将字符串中的字符随机播放(例如,hello可能是ehlol或lleoh或…)。我不想使用该方法,有没有更简单的方法? 问题答案: 我不知道更简单。但是您可以使用Math.rand()功能生成字符长度范围内的随机数,而无需替换,这将给您带来混乱的输出

  • 问题内容: 如果我错了,请纠正我,ReactIntl​​中的FormattedMessage返回一个由span标记包装的字符串。在ReactIntl​​ 1.2中,我们可以选择仅获取字符串部分。 这是我的问题:ReactIntl​​ 2.0中是否有与之等效的东西?我知道可以通过使用FormattedMessage中的Function-As- Child模式获取字符串 但是,它把我的组件中的“ re

  • 有没有办法通过FCM将上游通知消息从一个android设备发送到与Firebase数据库相连的另一个设备。 我知道XMPP服务器可以接收上游消息并将通知发送到其他设备。要接收用上游API发送的消息,我需要实现一个XMPP服务器,但还有其他方法吗???

  • 本文向大家介绍在不使用任何库的情况下在javascript中增加日期?,包括了在不使用任何库的情况下在javascript中增加日期?的使用技巧和注意事项,需要的朋友参考一下 要在JS中添加一天的日期,最好使用setDate函数。您可以在Date原型上创建以下函数,以将日期添加到日期。 示例 这将在第二天记录。