【发布时间】:2019-06-14 15:10:12
【问题描述】:
我知道以前有人问过这个问题,但我已经尝试过这些答案。我是安卓新手。一切看起来都不错,但我不明白为什么我得到一个空对象?任何人都可以指导我吗?
界面:
public interface CryptoAPI {
@GET("ActivityForTestingPurposeOnly/")
io.reactivex.Observable<List<Stream>> getData(@Query("Row") String Row,
@Query("Top") String Top,
@Query("AppID") String appid);
这是我的改装适配器:
public class RetrofitAdapter {
private String BASE_URL = "http://m.ilmkidunya.com/api/sectionactivity/sectionactivity.asmx/"
public static CryptoAPI newAPICreator() {
final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
final OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.build();
Retrofit retrofit = new Retrofit.Builder()
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build();
return retrofit.create(CryptoAPI.class);
}
}
}
最后,我得到响应的方法:
public void getStreams(){
CryptoAPI.RetrofitAdapter.newAPICreator()
.getData("0", "20", "73")
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Stream>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Stream model) {
arrayList.add(model);
Toast.makeText(getApplicationContext(),
"Size: " + arrayList.size(),
Toast.LENGTH_SHORT);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onComplete() {
}
});
}
> here is my
@SerializedName("ID")
@Expose
private Integer iD;
@SerializedName("Rating")
@Expose
private Integer rating;
@SerializedName("SectionID")
@Expose
private Integer sectionID;
@SerializedName("ContentID")
@Expose
private Integer contentID;
【问题讨论】:
-
你有没有试过在浏览器或邮递员上点击api来检查它是否真的是服务器的问题?
-
500-Internal Server Error表明此错误来自服务器端,而不是您的端。 -
是的,我收到了准确的回复。
-
解决了 URL 错误的问题,现在出现此错误。
-
这听起来像你期待一个数组
[ ... ],但得到一个对象{ ... }。检查您收到的 JSON 并相应地调整您的代码。