【学习阶段】

  • 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();

【开发阶段】

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

最新文章

  1. reactjs
  2. 118、通过solid来定义不同边框的颜色,可以只定义一个边框的颜色
  3. 用EasyWebSvr搭建Axure本地访问地址-转载加完善
  4. phantomjs和angular-seo-server实现angular单页面seo
  5. 由pthread_create引起的段错误
  6. 如何安装sublime text2以及它的插件?
  7. Hadoop HDFS 架构设计
  8. [Android Studio] 使用本地 aar 文件
  9. left join 多表关联查询
  10. Python标准库11 多进程探索 (multiprocessing包)
  11. C#中使用DLL文件
  12. Hadoop, Python, and NoSQL lead the pack for big data jobs
  13. 利用反射的特性将DataReader对象转化为List集合
  14. phpcms v9联动菜单的调用方法_详解get_linkage函数
  15. java下的第一个redis
  16. 用PS画一个齿轮
  17. PHP学习遇到的问题
  18. #翻译#原文来自Database.System.Concepts(6th.Edition.2010)2.6Relational Operations,原文作者Abraham Silberschaz , Henry F. Korth , S. Sudarshan
  19. STL --&gt; set用法
  20. SDOI2017 BZOJ 4820 硬币游戏 解题报告

热门文章

  1. word2vec C源码解析
  2. 全球 43 亿 IPv4 地址已耗尽!IPv6,刻不容缓
  3. Mybatis整合spring(适合小白)
  4. P1307 数字反转
  5. java 静态变量&amp;静态方法
  6. Python爬虫帮你打包下载所有抖音好听的背景音乐,还不快收藏一起听歌【华为云技术分享】
  7. 洛谷 题解 P1684 考验
  8. [TimLinux] JavaScript 代码控制滚动条移动到顶部/底部
  9. nbuoj2780 旅游问题
  10. 代码检查又一利器:ArchUnit