其实我也是第一次遇到,之所以有这个需要是因为一些与 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请求的学习所遇到的程序开发问题。 如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)