首页 > 解决方案 > 预期 1 个字节,但收到 3 个

问题描述

调用以下 api 时出现此错误。https://uhunt.onlinejudge.org/api/uname2uid/felix_halim

我正在使用改造。得到相同类型的错误。喜欢:

  1. 预期 1 个字节,但收到 3 个
  2. 预期 6 个字节,但收到 8 个
  3. 预期 3 个字节,但收到 5 个

下面给出了我的部分代码。

API接口

public interface UHApi {
    @GET("uname2uid/{userName}")
    Observable<Integer> loadUserId(
            @Path("userName") String userName
    );
}

改造计划

public class RetrofitInstance {

    private static Retrofit INSTANCE;
    private static final String BASE_URL = "https://uhunt.onlinejudge.org/api/";

    public static Retrofit getRetrofitInstance() {
        if (INSTANCE == null) {
            synchronized (RetrofitInstance.class) {
                if (INSTANCE == null) {
                    INSTANCE = new Retrofit.Builder()
                            .baseUrl(BASE_URL)
                            .addConverterFactory(GsonConverterFactory.create())
                            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                            .build();
                }
            }
        }
        return INSTANCE;
    }
}

API 调用

UHApi mUHApi;
mUHApi = RetrofitInstance.getRetrofitInstance().create(UHApi.class);

mUHApi.loadUserId("felix_halim")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.d(TAG,"onSubscribe called");
                        compositeDisposable.add(d);
                    }

                    @Override
                    public void onNext(Integer userId) {
                        Log.d(TAG, "onNext called");
                        Log.e(TAG, "user id = " + userId);
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "onError called");
                        Log.d(TAG, "onError msg = " + e.getMessage());
                        e.printStackTrace();
                    }

                    @Override
                    public void onComplete() {

                    }
                });

标签: androidapirestretrofit

解决方案


当您在路径注释中定义端点时,将使用端点中的括号。对于 Query 注释,您不需要添加括号和其中的内容。


推荐阅读