无法从REST API提取JSON作为字符串

时间:2019-05-28 12:47:11

标签: java android retrofit2

我正在尝试从REST API中以字符串形式获取JSON。

我为此使用retrofitscalarConverter。我可以传递URL来获取,并且改造实例也已成功创建,但是我没有从服务器得到任何响应。 PS:服务器上没有请求,因此这意味着我的请求没有从我的计算机中发出。

我是android新手,请帮助我。

创建改造实例:

Retrofit retrofit=new Retrofit.Builder()
                .baseUrl(base)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();
jsonApi jsonapi=retrofit.create(jsonApi.class);
Call<String> stringcall=jsonapi.getStringResponse(speech);

jsonApi接口:

public interface jsonApi {
    @GET
    Call<String> getStringResponse(@Url String url);
}

基本:它是基本URL

语音:它是一个变量,包含要处理的其余URL。

当我运行时,该应用卡住了,此消息显示在“运行”标签中:

W/OpenGLRenderer: Fail to change FontRenderer cache size, it already initialized
W/art: Before Android 4.1, method int android.support.v7.widget.DropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView

1 个答案:

答案 0 :(得分:1)

在下面一行

Call<String> stringcall=jsonapi.getStringResponse(speech);

您仅获得一个Call对象,该对象表示HTTP请求,仅此而已,该请求未执行。您需要使用该对象并调用execute方法来发出同步请求,或者调用enqueue方法来发出异步请求。

因此,如果您要发出同步请求,请尝试以下操作:

Retrofit retrofit=new Retrofit.Builder()
                .baseUrl(base)
                .addConverterFactory(ScalarsConverterFactory.create())
                .build();
jsonApi jsonapi=retrofit.create(jsonApi.class);
Call<String> stringcall=jsonapi.getStringResponse(speech);
try {
    Response<String> response = stringcall.execute();
    String result = response.body();
} catch (Exception ex) { 
    //handle exception
}

Call界面的文档为here,供您参考。