Android AsyncTask+Soap 的简单使用
来源:互联网 发布:宜昌正宗火锅 知乎 编辑:程序博客网 时间:2024/06/10 19:20
Soap 描述如下:
基于类对象的传输协议。
SOAP封装(envelop),它定义了一个框架,描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们;
SOAP编码规则(encoding rules),它定义了一种序列化机制,用于表示应用程序需要使用的数据类型的实例;
SOAP RPC表示(RPC representation),它定了一个协定,用于表示远程过程调用和应答;
SOAP绑定(binding),它定义了SOAP使用哪种协议交换信息。使用HTTP/TCP/UDP协议都可以。
android 使用soap 步骤如下:
1.引用第三方库
compile files('libs/ksoap2-android-assembly-3.6.1-jar-with-dependencies.jar')
2.创建一个工具栏方便进行网络请求AsyncTaskSoapUtil.java
package net.sytm.soapdemo.util;import android.os.AsyncTask;import org.ksoap2.SoapEnvelope;import org.ksoap2.SoapFault;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import org.xmlpull.v1.XmlPullParserException;import java.io.IOException;import java.util.Map;import java.util.Set;/** * Created by aoc on 2016/8/31. */public class AsyncTaskSoapUtil extends AsyncTask<Void, Void, String> { private String name; private String url; private String action; private Map<String, String> param; private Callback callback; public AsyncTaskSoapUtil(String name, String url, String action, Map<String, String> param) { this.name = name; this.url = url; this.action = action; this.param = param; } public void setCallback(Callback callback) { this.callback = callback; } @Override protected void onPreExecute() { callback.onPre(); } @Override protected String doInBackground(Void... voids) { String xml = ""; SoapObject request = new SoapObject(name, action); Set<Map.Entry<String, String>> set = param.entrySet(); for (Map.Entry<String, String> entry : set) { request.addProperty(entry.getKey(), entry.getValue()); } SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.bodyOut = request; HttpTransportSE transportSE = new HttpTransportSE(url); try { transportSE.call(getSoapAction(name, action), envelope); SoapObject result = (SoapObject) envelope.getResponse(); //Object bodyIn = envelope xml = result.toString(); } catch (SoapFault soapFault) { soapFault.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return xml; } @Override protected void onPostExecute(String data) { callback.onPost(data); } public interface Callback { void onPre(); void onPost(String data); } private String getSoapAction(String name, String action) { StringBuilder builder = new StringBuilder(); builder.append(name); builder.append(action); return builder.toString(); }}
private void send(String value1, String value2) { //接口 String action = "MemberLogin"; //参数 NameValueUtil nameValueUtil = new NameValueUtil(); nameValueUtil.put("phone", value1); nameValueUtil.put("password", value2); AsyncTaskSoapUtil taskUtil = new AsyncTaskSoapUtil(Constant.name, Constant.url, action, nameValueUtil.getParam()); taskUtil.setCallback(callback); taskUtil.execute(); } AsyncTaskSoapUtil.Callback callback = new AsyncTaskSoapUtil.Callback() { @Override public void onPre() { } @Override public void onPost(String data) { resultView.setText(data); } };
阅读全文
0 0
- Android AsyncTask+Soap 的简单使用
- Android AsyncTask 的简单使用
- Android AsyncTask 简单使用
- Android:Asynctask简单使用
- Android中AsyncTask的简单使用
- Android 中的AsyncTask的简单使用心得
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- S-T平面图中利用最短路求最小割(BZOJ 1001)
- mysql操作的基本增删改查
- php匿名函数 与 可变参数函数
- mysql数据库触发器详解
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- Android AsyncTask+Soap 的简单使用
- 服务器基础2012
- 一个字段同时满足多个条件的查询
- Hbuilder开发APP(一)——底部导航条简单实现
- 深入分析java线程池的实现原理
- c++和web交互
- 什么是大学精神
- 奇异值分解(SVD)原理详解及推导
- mean average precision 定义以及计算