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一样的类。
package com.example.aust_app; /*Created by wqy on 2019/11/8.*/ import android.content.Context;
import android.os.AsyncTask; import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE; public class WebRequest { private String SOAP_ACTION="http://WebXml.com.cn/getRegionProvince"; //可以设置一些默认值
private String NAMESPACE="http://WebXml.com.cn/";
private String METHOD_NAME="getRegionProvince";
private String URL="http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL"; WebRequest request = null;
Context context = null; public WebRequest(Context context) {
this.context = context;
} public static WebRequest init(Context context){
return new WebRequest(context);
} public String getSOAP_ACTION() {
return SOAP_ACTION;
} public WebRequest setSOAP_ACTION(String SOAP_ACTION) {
this.SOAP_ACTION = SOAP_ACTION;
return this;
} public String getNAMESPACE() {
return NAMESPACE;
} public WebRequest setNAMESPACE(String NAMESPACE) {
this.NAMESPACE = NAMESPACE;
return this;
} public String getMETHOD_NAME() {
return METHOD_NAME;
} public WebRequest setMETHOD_NAME(String METHOD_NAME) {
this.METHOD_NAME = METHOD_NAME;
return this;
} public String getURL() {
return URL;
} public WebRequest setURL(String URL) {
this.URL = URL;
return this;
} private SoapObject getInformation(){
SoapObject request=new SoapObject(NAMESPACE,METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
try{
HttpTransportSE transportSE=new HttpTransportSE(URL);
transportSE.call(SOAP_ACTION,envelope);
SoapObject result=(SoapObject)envelope.bodyIn; //获取到返回的结果,并强制转换成SoapObject对象
SoapObject test = (SoapObject)result.getProperty(0); //该对象中还嵌套了一个SoapObject对象,需要使用getProperty(0)把这个对象提取出来
return test;
}catch (Exception e){
e.printStackTrace();
}
return null;
} SoapObject result; //在子线程中请求webservice
class DownloadTask extends AsyncTask<Void,Integer,Boolean> { @Override
protected Boolean doInBackground(Void... voids) {
result = getInformation();
return null;
} @Override
protected void onPostExecute(Boolean aBoolean) {
StringBuilder builder = new StringBuilder();
//解析返回的数据
for(int i=0;i<result.getPropertyCount();i++){
builder.append(result.getProperty(i));
}
if (postExecute!=null){
postExecute.getResult(builder.toString());
}
}
} public void execute(){
new DownloadTask().execute();
} PostExecuteListener postExecute;
interface PostExecuteListener{
void getResult(String result);
} public PostExecuteListener getPostExecute() {
return postExecute;
} public WebRequest setPostExecuteListener(PostExecuteListener postExecute) {
this.postExecute = postExecute;
return this;
}
}
③在Activity中使用这样的类
WebRequest.init(this).setURL("url").setNAMESPACE("namespace").setMETHOD_NAME("methodName")
.setSOAP_ACTION("soapAction").setPostExecuteListener(new WebRequest.PostExecuteListener() {
@Override
public void getResult(String result) {
Toast.makeText(Main2Activity.this, ""+result, Toast.LENGTH_SHORT).show();
}
}).execute();
【开发阶段】
以上是学习阶段,利用别人给的测试接口进行测试,并且进行一定的封装使用,一系列没有任何问题。然后再去进入自己开发阶段。【解决问题⬇
Android 基于ksoap2的webservice请求的学习的更多相关文章
- Android实现KSOAP2访问WebService
Android实现KSOAP2访问WebService 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 写一个工具类来给主界面使用,作用是使用 ...
- Android使用KSOAP2调用WebService及正确导入jar包的问题(转)
Android使用KSOAP2调用WebService及正确导入jar包的问题(转) 错误信息 最近在学Android使用KSOAP2调用现有的Webservice的方法,期间在网上找了很多代 ...
- Android使用ksoap2调用C#中的webservice实现图像上传
目录: 一. android使用ksoap2调用webservice 二. 异步调用 三. Android使用ksoap2调用C#中的webservice实现图像上传参考方法 四. 图像传输中Base ...
- 在Android 中使用KSOAP2调用WebService
WebService 是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.在Android SDK中并没有提供调用WebService的 ...
- Android应用---基于NDK的samples例程hello-jni学习NDK开发
Android应用---基于NDK的samples例程hello-jni学习NDK开发 NDK下载地址:http://developer.android.com/tools/sdk/ndk/index ...
- Android探索之HttpURLConnection网络请求
前言: 最近一直想着学习一下比较好的开源网络框架okhttp,想着学习之前还是先总结一下Android原生提供的网络请求.之前一直在使用HttpClient,但是android 6.0(api 23) ...
- Android 基于Socket的聊天应用(二)
很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...
- Android 基于Netty的消息推送方案之字符串的接收和发送(三)
在上一篇文章中<Android 基于Netty的消息推送方案之概念和工作原理(二)> ,我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...
- Android 基于Netty接收和发送推送解决方案的消息字符串(三)
在上一篇文章中<Android 基于Netty的消息推送方案之概念和工作原理(二)> .我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...
随机推荐
- Java基础IO类之字节输入输出流
一.IO流概述 1.IO流:输入输出流(Input/Output) 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,即数据在设备间的传输流, 流的本质是数据传输,根据数据传输特性将 ...
- Theano at a Glance
Theano一览 Theano是一个Python库,它允许你定义.优化和求值数学表达式,特别是具有多维数组(numpy.ndarray)的数学表达式.对于涉及大量数据的问题,使用Theano可以获得与 ...
- js抽奖概率随机取出数据(简单示例)
在平常活动开发当中,经常会碰到抽奖等类似的js功能,那么下面我们随机取数组中的一条来展示出来. ( 一 ) 无概率问题 var gift_ = ['apple pro一台','iphoneX一台',' ...
- MySQL-简介-安装(5.5版和5.7版)
1.什么是MySQL (1)MySQL是一种关联数据库管理系统. (2)关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库中,可以增加速度,提高灵活性. (3)MySQL使用的是数据库常 ...
- Composer安装和使用
Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.Composer 不是一个包管理器.是的,它涉及 "packages" ...
- 【并发技术16】线程同步工具Exchanger的使用
如果两个线程在运行过程中需要交换彼此的信息,比如一个数据或者使用的空间,就需要用到 Exchanger 这个类,Exchanger 为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步 ...
- git的基本使用-1
1.git的安装 这里只介绍在 Linux 上安装. 如果你想在 Linux 上用二进制安装程序来安装 Git,可以使用发行版包含的基础软件包管理工具来安装. 如果以 Fedora 上为例,你可以使用 ...
- 【已解决】解决IntelliJ IDEA控制台输出中文乱码问题
IntelliJ IDEA 真的是一款很方便的Java开发工具,但是关于中文乱码这个问题我不得不吐槽,这个编码也弄得这么麻烦干嘛,真想找idea开发者干架,我敢打包票我能在一分钟之内一拳飞过去让他跪下 ...
- [TimLinux] CPU 常见架构介绍
1. 简介 系统性能依赖硬件架构,CPU架构决定了硬件的布局.常见的CPU架构:SMP, NUMA, MPP. 2. SMP(对称多处理器) SMP:Symmetric Multiprocessing ...
- POJ 1949 Chores
Farmer John's family pitches in with the chores during milking, doing all the chores as quickly as p ...