阅读前请注意:本文只是调试,没对结果进行处理
webservice可以理解为一种post请求,只是返回的不是json
使用方法跟发送post一样,只是需要修改content-type
除了常规的包还需要的包
retrofit+rxjava常规使用包包含什么?传送门
这里使用的是retrofit2.0+rxjava的方法,如何使用见上面的传送门
compile'com.squareup.retrofit2:converter-scalars:2.2.0'
@Headers({"Content-Type:text/xml; charset=utf-8"})
@POST("接口地址中除了域名和?以及?后面的,跟普通的post一样")
Observable<String> queryInfo(@Body String s);
//如果需要设置soapaction,在content-type后面追加,如
@Headers({"Content-Type:text/xml; charset=utf-8",
"SOAPAction:soapaction"})
调用
xml是什么样子的?见传送门
String xmlData=""
Retrofit retrofit = new Retrofit.Builder().baseUrl(url)
.addConverterFactory(ScalarsConverterFactory.create())//注意,这里是导入的新包使用,为了传输过程中不乱码
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
RetrofitInterface_XLKX httpApiS = retrofit.create(RetrofitInterface_XLKX.class);
httpApiS.queryInfo(soap11).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull String loginBean) {
//结果 回调
Log.e("测试soap", "'=="+loginBean);
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("测试soap错误", ""+e.getMessage() );
}
@Override
public void onComplete() {
}
});
}