改造2:第1行第1列路径$的输入结束

时间:2018-05-08 12:43:55

标签: android retrofit2 rx-java2

彻底搜索了这个特定的问题但是在我遇到的每个问题下实现答案时,我仍然得到相同的输出:

 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);

ApiClient

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;
    }
}

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));
                            }
                        });

请提前帮助,谢谢。

5 个答案:

答案 0 :(得分:0)

不确定,但我认为在Constant.API_REQUEST中你没有附加“/”。让我知道它是否正确。

离。@POST("index.php") // wrong

@POST("/index.php") //correct way

答案 1 :(得分:0)

当您的json响应出现问题时,您才会收到该错误,请再次检查以确保错误响应和正确的响应格式正确。

使用邮递员输入错误的凭据,看看输出是什么样的。

答案 2 :(得分:0)

当您期望响应中有一个对象时,您会收到此错误,但API除了结果代码(200,...)以外,不会返回任何其他内容。选项: -检查API是否确实返回了ServerResponse。 -如果您真的不需要它返回任何内容,请使用Observable<Response<Void>>代替Observable<ServerResponse>

答案 3 :(得分:0)

答案无效时,会发生此错误。 要更正此错误,请确保在请求的返回中没有任何内容。

例如。 界面白色Kotlin

@POST("endPoint/")
fun relatarProblema(@Body serverRequest: ServerRequest ): Call<Void>

不要忘记在api调用中覆盖返回类型。

科特林白色的例子

call.enqueue (object: Callback <Void> {
override fun onResponse(call: Call<Void>, response: Response<Void>) {

        }

        override fun onFailure(call: Call<Void>, t: Throwable) {

        }

})

答案 4 :(得分:0)

当我使用协程时,帮助的是基本上不从该方法返回任何内容:

@GET
@Headers("X-Requested-With:XMLHttpRequest")
suspend fun methodCall(
    @Url url: String
)