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 ...
随机推荐
- Mac OS 终端利器 iTerm2(怕以后找不到,自存自用)
之前一直使用 Mac OS 自带的终端,用起来虽然有些不太方便,但总体来说还是可以接受的,是有想换个终端的想法,然后今天偶然看到一个终端利器 iTerm2,发现真的很强大,也非常的好用,按照网上配置了 ...
- zabbix自动发现 url 以及对http返回状态码监控实现 告警
2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com ...
- OOXML中回车等特殊字符处理方法
问题点:NPOI处理xlsx文档时,将\r写成了换行符. 实例:以下字符abc\rcde 如果直接复制到Excel 2016,显示结果如下(单元格设置为折行显示): 如果用NPOI写入Xlsx文档,显 ...
- java基础(3)--详解String
java基础(3)--详解String 其实与八大基本数据类型一样,String也是我们日常中使用非常频繁的对象,但知其然更要知其所以然,现在就去阅读源码深入了解一下String类对象,并解决一些我由 ...
- 点击按钮每次都能实现图片的旋转和切换(swift)
效果如图: 代码如下: // // ViewController.swift // TwoSidedView // // Created by mayl on 2017/12/14. // Copyr ...
- 【Python3网络爬虫开发实战】6.4-分析Ajax爬取今日头条街拍美图【华为云技术分享】
[摘要] 本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法.这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来. 1. 准备工作 在本节 ...
- 【开发者portal在线开发插件系列三】字符串 及 可变长度字符串
基础篇 基础场景见上面两个帖子,这里单独说明字符串和可变长度字符串的用法. 话不多说,开始今天的演(表)示(演) Profile和插件开发 添加一个string类型的属性: 在插件里添加一条数据上报消 ...
- 华为路由交换-DHCP
DHCP 一. 配置基于接口地址池的DHCP 1.1实验原理 随着网络规模的扩大和网络复杂程度的提高,计算机位置变化(如便携机或无线网络)和计算机数量超过可分配的IP地址的情况将会经常出现.DHCP( ...
- 使用@media实现移动端使用@2x,@3x切换
/*dpr比值为1的css代码 */ div{ width:300px; height:200px; background:url(img/button@1x.png) ; } /* dpr比值为 ...
- 利用Mitmproxy抓包
http://mrpeak.cn/blog/mitmproxy/ 和Charles同样强大的免费抓包软件. 它是在终端操作的,界面没有Charles那么可视化.不过也很好用,通过各种快捷键操作,效 ...