我正在尝试使用改型和rxjava 2进行WebService调用。我在探索使用RxJava2的两种不同方法。问题是,当我使用可观察的,但不使用可流动的时,我得到了响应。使用Flowable时,日志没有打印出来。我试图调试它,但它没有进入下一步或完成中或错误中。仅执行订阅上的onSubscribe
。
1) 使用observable作为返回类型
new WebRequestManager().getContactObservable(userRequest)
.subscribe(new Observer<ResponseData>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ResponseData responseData) {
Log.e(TAG , "data "+responseData.getStatus());
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
Log.e(TAG , "data complete");
}
}
);
2)使用可流动作为返回类型
new WebRequestManager().getContactFlowable(userRequest)
.subscribe(new Subscriber<ResponseData>() {
@Override
public void onSubscribe(Subscription s) {
Log.e(TAG , "contact subscription ");
}
@Override
public void onNext(ResponseData responses) {
Log.e(TAG , "contact onNext ");
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
Log.e(TAG , "contact onComplete ");
}
});
静止触点改装api
public interface ContactApi {
@POST(WebRequest.GET_CONTACTS)
Flowable<ResponseData> getContactFlowable(@Body UserRequest userRequest);
@POST(WebRequest.GET_CONTACTS)
Observable<ResponseData> getContactObservable(@Body UserRequest userRequest);
}
调用webservice
public Flowable<ResponseData> getContactsData(UserRequest userRequest){
return webRequest.getWebClient().create(ContactApi.class).getContacts(userRequest);
}
public Observable<ResponseData> getContact(UserRequest userRequest){
return webRequest.getWebClient().create(ContactApi.class).getContact(userRequest);
}
获取改造实例
public static Retrofit getWebClient(){
//if(okHttpClient == null)
okHttpClient = new OkHttpClient.Builder()
.connectTimeout(120,TimeUnit.SECONDS)
.readTimeout(120,TimeUnit.SECONDS)
.writeTimeout(120,TimeUnit.SECONDS)
.addInterceptor(new WebRequestInterceptor("\"application/json\""))
.build();
// if(client == null)
client = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(LoganSquareConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
return client;
}
使用Subscriber,您必须呼叫request以获取项目:
new WebRequestManager().getContactFlowable(userRequest)
.subscribe(new Subscriber<ResponseData>() {
@Override
public void onSubscribe(Subscription s) {
Log.e(TAG , "contact subscription ");
s.request(Long.MAX_VALUE); // <---------------------------------
}
@Override
public void onNext(ResponseData responses) {
Log.e(TAG , "contact onNext ");
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
Log.e(TAG , "contact onComplete ");
}
});
另请参阅DisposableSubscriber及其示例。
有很多使用OkHTTP3发出请求的例子,但是,我仍然无法发出正确的请求。据我所知,我的设置是正确的。 我不断收到如下所示的回复。我不知道他们是什么意思。 {“ContentLength”:238,“ContentTypeString”:“Application/JSON”,“Source”:{“Buffer”:{“Size”:0},“Closed”:False,“Source”:{“BytesRe
问题内容: 我想向mysql发送查询并获取一个数组。但是,无论我怎样做,我都无法使它起作用。这是我的代码: 它总是说,。我究竟做错了什么? 问题答案: Flask抛出此异常,因为您的视图未返回任何内容。从您的观点返回响应: 要返回MySQL结果,也许将这些行连接到一个字符串中: 或定义一个模板并返回渲染的模板。 请注意,您确实不希望对参数使用字符串插值, 尤其是 在Web应用程序中。改用SQL参数
问题内容: 我有一个发出异步请求的函数。我如何从中返回响应/结果? 我尝试从回调中返回值,以及将结果分配给函数内部的局部变量并返回该局部变量,但这些方法均未真正返回响应(它们都返回或变量的初始值为任意值) 。 使用jQuery函数的示例: 使用node.js的示例: 使用承诺块的示例: 问题答案: 在 一 中的Ajax代表 异步 。这意味着发送请求(或接收响应)已从正常执行流程中删除。在您的示例中
使用promise的块的示例:
我正在制作一个简单的Rest服务,它必须将JSON请求中的数据添加到数据库(MongoDB)中。当我向服务发出请求时出现问题,服务器会出现以下错误: Controller@0.0.0start C:\users\Fernando\Google Drive\tcc_Fernando_Felipe\Controller\Controller节点./bin/www {[Error:找不到模块“../bu
这个问题可能有点抽象,但我正试图用做些什么,我被卡住了。 基本场景是这样的,我通过 Camel 公开一个 Web 服务 A,在这个服务中,有一个基于内容的路由来决定我是否必须调用 B 或 C,我想调用正确的路由,并且让 或 的响应成为我的服务 的响应 我已经使用 公开了网络服务,它运行良好,但我不知道之后如何进行路由,我想到了这个: 我不确定这是否是最好的方法,甚至这是否正确,但这是我想出来的。