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 ...
随机推荐
- linux网络配置(ifcfg)
将linux主机接入到网络需要配置哪些配置项? IP/NETMASK:本地通信. 路由(网管):跨网络通信. DNS服务器地址:基于主机名通信. DNS服务器有三种:主/备用DNS服务器/第三备份dn ...
- Java通过 Scanner 类来获取用户的输入
通过 Scanner 类来获取用户的输入. import java.util.Scanner; Scanner s = new Scanner(System.in);// 从键盘接收数据 Syste ...
- HTML,CSS,Javascript,PHP在网站结构中扮演的“角色”
①HTML 在网站结构中使用来,展示网页内容的: ②CSS 在网站结构中使用来,美化页面,如字体颜色大小等: ③Javascript(JS) 在网站结构中使用来,让页面动起来,提高浏览体验 ...
- 【高可用架构】借助Envoy工具发布项目到多台服务器
前言 在上一篇,我们已经成功在开发机上部署了Deploy项目,下面我们继续在开发机上安装Envoy 两台应用服务器的IP 192.168.10.12 192.168.10.18 [高可用架构]系列链接 ...
- 格式化JS代码
平常在项目中经常会遇到下载别人的js文件都是加密过的,不方便阅读都是一整行, 个人无法进行阅读,浏览器能够识别出来,所以就可以使用浏览器进行格式化js代码: 1.打开浏览器chrome为例,打开使用j ...
- Netty学习——Netty和Protobuf的整合(二)
Netty学习——Netty和Protobuf的整合(二) 这程序是有瑕疵的,解码器那里不通用,耦合性太强,有两个很明显的问题,但是要怎么解决呢?如:再加一个内部类型 Person2,之前的代码就不能 ...
- 浏览器url访问tomcat出现错误 java.lang.NoSuchMethodError解决方法
一般该类错误: 找不到方法或找不到类, 都是maven pom 仓库依赖的问题,有时是 因为缺少该依赖类,可以考虑添加相关依赖: 有时因为依赖冲突, 可以到 maven 的仓库下面把 有关该类的包 全 ...
- 解密国内BAT等大厂前端技术体系-百度篇(长文建议收藏)
1 引言 整个业界在前端框架不断迭代中,也寻找到了许多突破方向,例如跨平台中的RN.Flutter,服务端GraphQL.Serverless,前端和客户端的融合越来越紧密,前端在Node和Elect ...
- 使用 webservice 实现 RPC 调用
WebService 介绍 Web service 是一个平台独立的,低耦合的 web 的应用程序用于开发分布式的互操作的应用程序.Web Service 技术, 能使得运行在不同机器上的不同应用无须 ...
- css Backgroud-clip (文字颜色渐变)
首先来瞄一下background-clip,这个属性是干嘛的? 顾名思义,背景裁剪... 按照我自己的理解就是背景的显示区域 此处粘上MDN的示例链接(嫌麻烦的,后面我也贴上截图)https:// ...