1.配置app build.gradle

 /**     * network     */    compile 'com.squareup.retrofit2:retrofit:2.0.2'    compile('com.squareup.retrofit2:converter-simplexml:2.0.2') {        exclude group: 'stax', module: 'stax-api'        exclude group: 'stax', module: 'stax'        exclude group: 'xpp3', module: 'xpp3'    }    compile 'com.squareup.retrofit2:converter-gson:2.0.2'    compile 'com.squareup.okhttp3:okhttp:3.2.0'    compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'    compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'

2.配置Okhttp和Retrofit

    /**     * 配置Okhttp     */    public void configGoodsOkhttp() {        OkHttpClient.Builder builder = new OkHttpClient.Builder();        if (BuildConfig.DEBUG) {            HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {                @Override                public void log(String message) {                    Log.i("RetrofitLog", "retrofitBack = " + message);                }            });            /**             * 设置Log打印级别 类型为BASIC,其实日志级别分为4类:NONE、BASIC、HEADERS、BODY             *             * NONE:没有任何log BASIC:请求/响应行 HEADERS:请求/响应行 + 头 BODY:请求/响应行 + 头 + 体             */            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);            builder.addInterceptor(loggingInterceptor);        }        builder.interceptors().add(new Interceptor() {            @Override            public okhttp3.Response intercept(Chain chain) throws IOException {                Request original = chain.request();                Request.Builder requestBuilder = original.newBuilder()                        .header("Content-Type", "text/xml;charset=UTF-8")   // 对于SOAP 1.1, 如果是soap1.2 应是Content-Type: application/soap+xml; charset=utf-8                        .method(original.method(), original.body());                Request request = requestBuilder.build();                return chain.proceed(request);            }        });        /**         * 设置超时         */        builder.connectTimeout(10, TimeUnit.SECONDS);        builder.readTimeout(20, TimeUnit.SECONDS);        builder.writeTimeout(20, TimeUnit.SECONDS);        /**         * 错误重连         */        builder.retryOnConnectionFailure(true);        mGoodHttpClient = builder.build();    }

3.获取到对应的Service

  /**     * 获取Goodervice     *     * @return     */    private GoodService getGoodService() {        Retrofit goodRetrofit = new Retrofit.Builder().baseUrl(Constants.HOST).client(mGoodHttpClient)                .addConverterFactory(SimpleXmlConverterFactory.create()).build();        return goodRetrofit.create(GoodService.class);    }

4.创建对应Service

public interface GoodService {   @POST("services/salesBillService?wsdl")    Call getRoleInfo(@Body GoodRequestEnvelope requestEnvelope);}

5.SoapUi界面

request:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cxf="http://cxf.web.openplatform.wz.com/">   <soapenv:Header/>   <soapenv:Body>      <cxf:findWithPage>                  <arg0>0arg0>         <arg1>1arg1>         <arg2>10arg2>                  <arg3>10043615arg3>      cxf:findWithPage>   soapenv:Body>soapenv:Envelope>

response:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   <soap:Body>      <ns2:findWithPageResponse xmlns:ns2="http://cxf.web.openplatform.wz.com/">         <return>{"total":8,"goodsList":[{"bg_tid":9,"bg_jobcode":null,"bg_name":"11","bg_spec":"11","bg_unit":null,"bg_smgetprice":1.0,"bgp_Zprices":1.0,"bgp_Zhuiyuan":1.0,"bgp_Xprices":1.0,"bgp_Xhuiyuan":1.0,"bg_favprice":0.0,"bm_XPrices":1.0,"bg_maker":null,"bg_brand":null,"bg_code":"114","bg_classnum":"","bg_class":"666","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1487871902,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"11","bg_ifWholesale":null,"bg_wholesalePrice":1.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null},{"bg_tid":10,"bg_jobcode":null,"bg_name":"11","bg_spec":"11","bg_unit":null,"bg_smgetprice":1.0,"bgp_Zprices":1.0,"bgp_Zhuiyuan":1.0,"bgp_Xprices":1.0,"bgp_Xhuiyuan":1.0,"bg_favprice":0.0,"bm_XPrices":1.0,"bg_maker":null,"bg_brand":null,"bg_code":"115","bg_classnum":"","bg_class":"666","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1487871903,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"11","bg_ifWholesale":null,"bg_wholesalePrice":1.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null},{"bg_tid":11,"bg_jobcode":null,"bg_name":"11","bg_spec":"11","bg_unit":null,"bg_smgetprice":1.0,"bgp_Zprices":3.0,"bgp_Zhuiyuan":1.0,"bgp_Xprices":3.0,"bgp_Xhuiyuan":1.0,"bg_favprice":0.0,"bm_XPrices":3.0,"bg_maker":null,"bg_brand":null,"bg_code":"11","bg_classnum":"","bg_class":"999","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1487874460,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"11","bg_ifWholesale":null,"bg_wholesalePrice":1.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null},{"bg_tid":12,"bg_jobcode":null,"bg_name":"11","bg_spec":"11","bg_unit":null,"bg_smgetprice":1.0,"bgp_Zprices":3.0,"bgp_Zhuiyuan":1.0,"bgp_Xprices":3.0,"bgp_Xhuiyuan":1.0,"bg_favprice":0.0,"bm_XPrices":3.0,"bg_maker":null,"bg_brand":null,"bg_code":"22","bg_classnum":"","bg_class":"999","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1487874460,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"11","bg_ifWholesale":null,"bg_wholesalePrice":1.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null},{"bg_tid":13,"bg_jobcode":null,"bg_name":"33","bg_spec":"11","bg_unit":null,"bg_smgetprice":1.0,"bgp_Zprices":3.0,"bgp_Zhuiyuan":1.0,"bgp_Xprices":3.0,"bgp_Xhuiyuan":1.0,"bg_favprice":0.0,"bm_XPrices":3.0,"bg_maker":null,"bg_brand":null,"bg_code":"33","bg_classnum":"","bg_class":"999","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1487874460,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"33","bg_ifWholesale":null,"bg_wholesalePrice":1.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null},{"bg_tid":14,"bg_jobcode":null,"bg_name":"11","bg_spec":"11","bg_unit":null,"bg_smgetprice":1.0,"bgp_Zprices":1.0,"bgp_Zhuiyuan":1.0,"bgp_Xprices":1.0,"bgp_Xhuiyuan":1.0,"bg_favprice":0.0,"bm_XPrices":1.0,"bg_maker":null,"bg_brand":null,"bg_code":"116","bg_classnum":"","bg_class":"666","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1487871903,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"11","bg_ifWholesale":null,"bg_wholesalePrice":1.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null},{"bg_tid":71,"bg_jobcode":null,"bg_name":"111","bg_spec":"111","bg_unit":null,"bg_smgetprice":11.0,"bgp_Zprices":22.0,"bgp_Zhuiyuan":11.0,"bgp_Xprices":22.0,"bgp_Xhuiyuan":11.0,"bg_favprice":0.0,"bm_XPrices":22.0,"bg_maker":null,"bg_brand":null,"bg_code":"1234","bg_classnum":"","bg_class":"999","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1488126843,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"111","bg_ifWholesale":null,"bg_wholesalePrice":11.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null},{"bg_tid":72,"bg_jobcode":null,"bg_name":"114232424242424242424","bg_spec":"11","bg_unit":null,"bg_smgetprice":1.0,"bgp_Zprices":5.0,"bgp_Zhuiyuan":1.0,"bgp_Xprices":5.0,"bgp_Xhuiyuan":1.0,"bg_favprice":0.0,"bm_XPrices":5.0,"bg_maker":null,"bg_brand":null,"bg_code":"112","bg_classnum":"","bg_class":"999","bg_area_num":"","bg_isbub":true,"bg_recnum":0,"bg_bubgetprice_notax":0.0,"sg_coupprice":0,"bg_provider_num":null,"bg_Day":0,"bg_Num":0,"bg_isTeJia":null,"bg_limitDays":null,"bg_limitNum":null,"bg_goodsCoupprice":0.0,"is_weight":null,"bg_stamp":1488129779,"bg_activeFlag":"1","bg_imgUrl":"","bg_letterShort":"114232424242424242424","bg_ifWholesale":null,"bg_wholesalePrice":1.0,"bg_minimumPurchase":null,"cheapDate":null,"payType":null}]}return>      ns2:findWithPageResponse>   soap:Body>soap:Envelope>

6.写请求类

@Root(name = "soapenv:Body", strict = false)public class GoodRequestBody {    @Element(name = "cxf:findWithPage", required = false)    private GoodRequestData goodRequestData;    public GoodRequestData getGoodRequestData() {        return goodRequestData;    }    public void setGoodRequestData(GoodRequestData goodRequestData) {        this.goodRequestData = goodRequestData;    }}
public class GoodRequestData {    @Element(name = "arg0")    private String arg0;    @Element(name = "arg1")    private int arg1;    @Element(name = "arg2")    private int arg2;    @Element(name = "arg3")    private String arg3;    public String getArg0() {        return arg0;    }    public void setArg0(String arg0) {        this.arg0 = arg0;    }    public int getArg1() {        return arg1;    }    public void setArg1(int arg1) {        this.arg1 = arg1;    }    public int getArg2() {        return arg2;    }    public void setArg2(int arg2) {        this.arg2 = arg2;    }    public String getArg3() {        return arg3;    }    public void setArg3(String arg3) {        this.arg3 = arg3;    }}
@Root(name = "soapenv:Envelope")@NamespaceList({        @Namespace(reference = "http://cxf.web.openplatform.wz.com/", prefix = "cxf"),        @Namespace(reference = "http://schemas.xmlsoap.org/soap/envelope/", prefix = "soapenv")})public class GoodRequestEnvelope {    @Element(name = "soapenv:Body", required = false)    private GoodRequestBody body;    @Element(name = "soapenv:Header", required = false)    public String header;    public GoodRequestBody getBody() {        return body;    }    public void setBody(GoodRequestBody body) {        this.body = body;    }}

7.写响应类

@Root(name = "soap:Body", strict = false)@NamespaceList({        @Namespace(reference = "http://cxf.web.openplatform.wz.com/", prefix = "ns2")})public class GoodResponseBody {    @Element(name = "findWithPageResponse", required = false)    private GoodResponseData data;    public GoodResponseData getData() {        return data;    }    public void setData(GoodResponseData data) {        this.data = data;    }}
@Root(name = "ns2:findWithPageResponse", strict = false)public class GoodResponseData {    @Element(name = "return")    private String result;    public String getResult() {        return result;    }    public void setResult(String result) {        this.result = result;    }}
@Root(name = "soap:Envelope")@NamespaceList({        @Namespace(reference = "http://schemas.xmlsoap.org/soap/envelope/", prefix = "soap")})public class GoodResponseEnvelope {    @Element(required = false, name = "Body")    private GoodResponseBody body;    public GoodResponseBody getBody() {        return body;    }    public void setBody(GoodResponseBody body) {        this.body = body;    }}

8.写网络请求

    /**     * 下载商品     */    private void downloadGoods() {        GoodRequestEnvelope goodRequestEnvelope = new GoodRequestEnvelope();        GoodRequestBody goodRequestBody = new GoodRequestBody();        GoodRequestData goodRequestData = new GoodRequestData();        goodRequestData.setArg0("0");        goodRequestData.setArg1(1);        goodRequestData.setArg2(1);        goodRequestData.setArg3("10033481");        goodRequestBody.setGoodRequestData(goodRequestData);        goodRequestEnvelope.setBody(goodRequestBody);        Call goodResponseEnvelopeCall = RetrofitUtil.getInstance().downloadGoods(goodRequestEnvelope);        goodResponseEnvelopeCall.enqueue(new Callback() {            @Override            public void onResponse(Call call, Response response) {                if (response != null && response.isSuccessful()) {                    GoodResponseEnvelope goodResponseEnvelope = response.body();                    if (goodResponseEnvelope != null) {                        String mg = goodResponseEnvelope.getBody().getData().getResult();                    }                }            }            @Override            public void onFailure(Call call, Throwable t) {                showToast(t.getMessage());            }        });    }
 /**     * 下载商品     *     * @param goodRequestEnvelope 请求Request     */    public Call downloadGoods(GoodRequestEnvelope goodRequestEnvelope) {        return mGoodService.getRoleInfo(goodRequestEnvelope);    }
public class RetrofitUtil {    private static RetrofitHelper mRetrofitHelper = null;    public static void initRetrogitHelp() {        mRetrofitHelper = new RetrofitHelper();    }    /**     * 单例模式获取RetrifitHelp     * @return     */    public static RetrofitHelper getInstance() {        if (mRetrofitHelper == null) {            mRetrofitHelper = new RetrofitHelper();        }        return mRetrofitHelper;    }}

更多相关文章

  1. android修改默认语言
  2. Android(安卓)okHttp上传单张或多张照片
  3. android volley封装及源码解析
  4. android 使用post方式上传文件
  5. android post请求接口demo
  6. Android(安卓)ListView的item点击无响应的解决方法
  7. Android(安卓)来电翻转静音实现源码
  8. Android中使用HttpURLConnection和HttpClient实现GET和POST请求
  9. Android使用GET_CONTENT Action获取打开相应文件类型的应用

随机推荐

  1. Android输入法的显示与隐藏
  2. android 开发使用 kotlin 进行点击事件监
  3. Android(安卓)ImageView去掉周围的白边
  4. ubuntu 12.04 下安装android编译环境
  5. Android(安卓)Google应用移植时包依赖关
  6. cordova打包android apk
  7. Android下载完文件打开
  8. 给android设置代理
  9. android 存储操作 大小显示换算 kb mb KB
  10. Android(安卓)对.properties文件的读取