Android 基于ksoap2的webservice请求的学习

发布时间:2020-11-21 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了Android 基于ksoap2的webservice请求的学习编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

 【学习阶段】

  • WebService网络请求?

    其实我也是第一次遇到,之所以有这个需要是因为一些与 ERP 相关的业务,需要用到这样的一个请求方式。

  • 开始学习WebService 

  ①当然是百度搜索,这里找了一个学习的博客  https://blog.csdn.net/swjtugiser/article/details/76840353

   使用 ksoap2 框架请求 ,jar 包下载地址   http://simpligility.github.io/ksoap2-android/getting-started.html  ,放在Project 模式的  libs 目录下。

           根据以上地址进行学习。

 

  ②在开发的过程中我们频繁的用到 网络请求,所以我们最好能封装成像okhttp一样的类。 

  1 package com.example.aust_app;
  2 
  3 
  4 /*Created by wqy on 2019/11/8.*/
  5 
  6 import android.content.Context;
  7  android.os.AsyncTask;
  8 
  9  org.ksoap2.SoapEnvelope;
 10  org.ksoap2.serialization.SoapObject;
 11  org.ksoap2.serialization.SoapSerializationEnvelope;
 12  org.ksoap2.transport.HttpTransportSE;
 13 
 14 public class WebRequest {
 15 
 16     private  String SOAP_ACTION="http://WebXml.com.cn/getRegionProvince";  //可以设置一些默认值
 17     private  String NAMESPACE="http://WebXml.com.cn/";
 18     private  String METHOD_NAME="getRegionProvince" 19     private  String URL="http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL" 20 
 21     WebRequest request = null 22     Context context =  23 
 24 
 25     public WebRequest(Context context) {
 26         this.context = context;
 27     }
 28 
 29     static  WebRequest init(Context context){
 30         return new WebRequest(context);
 31  32 
 33      String getSOAP_ACTION() {
 34         return SOAP_ACTION;
 35  36 
 37      WebRequest setSOAP_ACTION(String SOAP_ACTION) {
 38         this.SOAP_ACTION = 39         this 40  41 
 42      String getNAMESPACE() {
 43          NAMESPACE;
 44  45 
 46      WebRequest setNAMESPACE(String NAMESPACE) {
 47         this.NAMESPACE = 48          49  50 
 51      String getMETHOD_NAME() {
 52          METHOD_NAME;
 53  54 
 55      WebRequest setMETHOD_NAME(String METHOD_NAME) {
 56         this.METHOD_NAME = 57          58  59 
 60      String getURL() {
 61          URL;
 62  63 
 64      WebRequest setURL(String URL) {
 65         this.URL = 66          67  68 
 69     private SoapObject getInformation(){
 70         SoapObject request= SoapObject(NAMESPACE,METHOD_NAME);
 71 
 72         SoapSerializationEnvelope envelope =  SoapSerializationEnvelope(SoapEnvelope.VER11);
 73         envelope.setOutputSoapObject(request);
 74         try{
 75             HttpTransportSE transportSE= HttpTransportSE(URL);
 76             transportSE.call(SOAP_ACTION,envelope);
 77             SoapObject result=(SoapObject)envelope.bodyIn; //获取到返回的结果,并强制转换成SoapObject对象
 78             SoapObject test = (SoapObject)result.getProperty(0); 该对象中还嵌套了一个SoapObject对象,需要使用getProperty(0)把这个对象提取出来
 79              test;
 80         }catch (Exception e){
 81             e.printStackTrace();
 82         }
 83          84  85 
 86     SoapObject result; 在子线程中请求webservice
 87     class DownloadTask extends AsyncTask<Void,Integer,Boolean> {
 88 
 89         @Override
 90         protected Boolean doInBackground(Void... voids) {
 91             result = getInformation();
 92              93  94 
 95  96         protected void onPostExecute(Boolean aBoolean) {
 97             StringBuilder builder =  StringBuilder();
 98             解析返回的数据
 99             for(int i=0;i<result.getPropertyCount();i++){
100                 builder.append(result.getProperty(i));
101             }
102             if (postExecute!=103                 postExecute.getResult(builder.toString());
104 105 106 107 
108      execute(){
109          DownloadTask().execute();
110 111 
112     PostExecuteListener postExecute;
113     interface PostExecuteListener{
114          getResult(String result);
115 116 
117      PostExecuteListener getPostExecute() {
118          postExecute;
119 120 
121      WebRequest setPostExecuteListener(PostExecuteListener postExecute) {
122         this.postExecute =123         124 125 }

 

  ③在Activity中使用这样的类

 WebRequest.init(this).setURL("url").setNAMESPACE("namespace").setMETHOD_NAME("methodName")
                .setSOAP_ACTION("soapAction").setPostExecuteListener( WebRequest.PostExecuteListener() {
            @Override
             getResult(String result) {
                Toast.makeText(Main2Activity.this,""+result,Toast.LENGTH_SHORT).show();
            }
        }).execute();

 

 【开发阶段】

  以上是学习阶段,利用别人给的测试接口进行测试,并且进行一定的封装使用,一系列没有任何问题。然后再去进入自己开发阶段。【解决问题⬇

总结

以上是编程之家为你收集整理的Android 基于ksoap2的webservice请求的学习全部内容,希望文章能够帮你解决Android 基于ksoap2的webservice请求的学习所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!