我已经对这个特定的问题进行了彻底的搜索,但是在我遇到的每个问题下实现答案时,仍然得到相同的输出:
End of input at line 1 column 1 path $
我在PostMan上执行了请求,得到了预期的输出:Here is the Screenshot of the Postman Request
接口
@POST(Constant.API_REQUEST)
Observable<ServerResponse> postToWinnersList(@Body ServerRequest serverRequest);
Api客户端
public class ApiClient {
public static Retrofit retrofit;
private static OkHttpClient.Builder okHttpClientBuilder;
private static HttpLoggingInterceptor loggingInterceptor;
public static Retrofit getApiClient(){
if (retrofit == null){
// create instance of Httpclient
okHttpClientBuilder = new OkHttpClient.Builder();
loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
if(BuildConfig.DEBUG){
okHttpClientBuilder.addInterceptor(loggingInterceptor);
}
// instance of retrofit
retrofit = new Retrofit.Builder().baseUrl(Constant.BASE_URL).
addCallAdapterFactory(RxJava2CallAdapterFactory.create()).
addConverterFactory(GsonConverterFactory.create())
.client(okHttpClientBuilder.build())
.build();
}
return retrofit;
}
}
改装/RxJava请求代码:
Observable<ServerResponse> response = apiInterface.postToWinnersList(serverRequest);
response.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribeWith(new DisposableObserver<ServerResponse>() {
@Override
public void onNext(ServerResponse serverResponse) {
AVLoadingIndicatorView1.setVisibility(View.GONE);
txtSubmitWinner.setVisibility(View.VISIBLE);
}
@Override
public void onError(Throwable e) {
AVLoadingIndicatorView1.setVisibility(View.GONE);
txtSubmitWinner.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onComplete() {
showShortMsg(getString(R.string.submit_success));
}
});
请帮忙,先谢了。
6条答案
按热度按时间u5rb5r591#
当您期望响应中包含一个对象,但API只返回结果代码(200,...)时,您可能会遇到此错误。- 检查API是否真的返回了
ServerResponse
。-如果您真的不需要它返回任何内容,请使用Observable<Response<Void>>
而不是Observable<ServerResponse>
7uhlpewt2#
只有当
json
响应有问题时才会出现该错误,请再次检查以确保错误响应和正确响应的格式都正确。使用postman输入错误的凭据,然后查看输出结果。
lhcgjxsq3#
不确定,但我认为在Constant.API_REQUEST中您没有附加“/"。请让我知道它是否正确。
例如
@POST("index.php") // wrong
vxqlmq5t4#
当答案为空时会发生此错误。若要更正此错误,请确保在返回的请求中将包含空。
例如,与Kotlin的接口
不要忘记重写API调用中的返回类型。
示例whitKotlin
})
ctrmrzij5#
当我使用协程的时候,帮助我的是基本上不从方法返回任何东西:
vatpfxk56#
昨天我也遇到了同样的异常,发现我使用的是LogOutResponse数据类作为API的预期响应,但后来我发现API不返回任何与该数据类对应的JSON响应,实际上,它在主体中不返回任何内容,只返回结果代码(200,300,400等)。
到
早期的改进尝试在第1行解析JSON响应,但该行没有JSON,这就是抛出异常的原因。
修改后,代码运行良好,因为Response是一个默认的改进类,其内部的Unit类型是void类型,这意味着我们不期望返回任何内容(响应中没有JSON主体)。