我知道以前有几个人问过这个问题,但我已经尝试了这些答案。我是Android新手。一切看起来都很好,但我不明白为什么我会得到一个空对象?有人可以指导我吗?
接口:
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;
在这里,您可以在图像中看到
总结
我测试了你给的endpoint一切正常
curl -X GET \
'http://m.ilmkidunya.com/api/sectionactivity/sectionactivity.asmx/ActivityForTestingPurposeOnly?Row=0&Top=20&AppId=73' \
-H 'Postman-Token: f64fdf34-4dbb-4201-93e9-e4c95fe7064d' \
-H 'cache-control: no-cache'
回报是
{
"stream": [
{
"ID": 583750,
"Rating": 0,
"SectionID": 59,
"ContentID": 0,
"SectionName": "Comments",
"SortOrder": 2,
"Title": "ICS",
...
}
]
}
出了什么问题
您使用了可观察的
你需要做什么
已更新(基于用户问题更新)
像这样创建一个名为Stream的对象
public class Stream {
@SerializedName("stream")
List<StreamItem> streamItems; // <-- Array list of the stream items you have
}
创建一个名为StreamItem
的对象,如下所示
public class StreamItem {
@SerializedName("ID") // <- json key
Int id;
@SerializedName("Rating")
Int rating;
@SerializedName("SectionID")
Int sectionId;
@SerializedName("ContentID")
Int contentId;
@SerializedName("SectionName")
String sectionName;
@SerializedName("Title")
String title;
... // additional properties you need
}
然后像这样改变你的api服务接口
io.reactivex.Observable<Stream>
此外,如果您没有将rxjava2与旧的rxjava1或任何相关的可观察
类一起使用,您可以直接在服务类的顶部大部分导入可观察
类
import io.reactivex.Observable
并像这样使用它
Observable<Stream>
这样做,使用我上面提供的模型对象
public interface CryptoAPI {
@GET("ActivityForTestingPurposeOnly/")
Observable<Stream> getData(@Query("Row") String Row,
@Query("Top") String Top,
@Query("AppID") String appid);
你就是这么叫它的
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 stream) {
// IMPORTANT NOTE:
// Items return here in onNext does not mean the
// object you have (eg. each Stream's object in streams' list)
// it represents streams of generic data objects
// This is where you can access the streams array
arrayList.addAll(stream.streamItems) // <- notice the usage
Toast.makeText(getApplicationContext(),
"Size: " + arrayList.size(),
Toast.LENGTH_SHORT);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onComplete() {
}
});
}
阅读更多关于
请求方式: "|3|1|url|\r" 参数: url 设置Get请求的url链接 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码, 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: softSerial.print("|3|1|http:/
我需要发送一个请求,如下所示 我使用以下代码,但它似乎没有发送一个正确的请求,因为响应对象是空的。我也想知道如何显示完整的url restTemboard发送?我知道WireShark可以使用,但有什么方法可以使用restTem板检索它吗? 密码
zendserver 2019.7 php 7.3 apache 2.4 在测试环境中,我通过curl向我的本地服务器发送JSON post请求。当CURLOPT_POSTFIELDS少于1000个字符时,它的脚本被执行,我得到的响应很好。 但是当我增加JSON数组的长度时,同样的脚本会出现404错误。 我已经改变了所有的配置,如post_max_size等,但没有任何效果。 }'; $ URL
当我做POST请求调用使用JsonObjectRequest在凌空然后在某些wifi它是发送空的身体。但是它可以很好地处理StringRequest POST请求。它在所有移动网络上都运行良好。 我正在使用node。js服务器和expressjs/body解析器。当我使用邮递员发出邮件请求时,一切正常。 错误是什么?如果有人想看我能提供的代码。 使用StringRequest的POST请求 POS
本文向大家介绍jsp+ajax发送GET请求的方法,包括了jsp+ajax发送GET请求的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ajax发送GET请求,然后通过jsp页面来接收处理的实现方法。分享给大家供大家参考。具体实现方法如下: Ajax发送GET请求 这里用一个实例演示Ajax发送get请求,实例具体要求为一个注册页面,当用户填写完用户名称时,该输入框失去焦点后会通过A
问题内容: 我想将我的网址发送到(和)。 我当前的请求代码不起作用。 使用是 不是 一个容易回答。 问题答案: 在iOS中发送和请求非常容易。无需其他框架。 请求: 首先,将我们的(按需发送的内容)创建为,然后将其转换为。 目标 接下来,我们阅读的,因此我们可以将其传递给请求。 现在我们有了要发布的内容,我们可以创建一个,并包含我们的。 迅速 最后,我们可以发送请求,并通过创建新的请求来阅读回复: