public Observable<String> getPlayUrl(String url) {
return Observable.create(emitter -> {
Request request = new Request.Builder()
.url(url)
.get() // 不写,默认是GET请求
.build();
Call call = okHttpClient.newCall(request);
// 异步调用
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
System.out.println("发送 GET 请求出现异常!" + e);
emitter.onError(e);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String body = response.body().string();
System.out.println("body:" + body);
emitter.onNext(body); // 传递 body 值给调用方
emitter.onComplete(); // 告知调用方已完成处理
}
});
});
}
下面是调用方法
getPlayUrl(url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
// 订阅成功
}
@Override
public void onNext(String body) {
// 获取到了 body 值
System.out.println("body: " + body);
}
@Override
public void onError(Throwable e) {
// 出现错误
e.printStackTrace();
}
@Override
public void onComplete() {
// 处理完成
}
});