soap
Soap是指简单对象访问协议,属于WebService三大要素之一。
刚好项目中有用到了soap协议,于是就进行了简单的封装成了工具类。代码如下:
package com.szh.inventorymanage.ui;
import java.util.Map;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
public class SaopUtil {
public static String request(SoapObject request) {
// 实例化SoapObject对象,并指定命名空间和方法名
// SoapObject request = new SoapObject(Contants.nameSpace, methodName);
// if (!req.equals("")) {
// // 设置参数
// request.addProperty("lsId", req);
// }
// request.addProperty("password", encrypted_pwd);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.setOutputSoapObject(request);
// 设置是否为.net
envelope.dotNet = true;
envelope.encodingStyle = SoapSerializationEnvelope.ENV;
// 构建传输对象,并指明端口
HttpTransportSE ht = new HttpTransportSE(Contants.wsdl);
try {
ht.call(null, envelope);
} catch (Exception e) {
e.printstacktrace();
}
Object resultObject = null;
try {
resultObject = envelope.getresponse();// 使用getResponse方法获得WebService方法的返回结果
} catch (Exception e) {
e.printStackTrace();
}
if (resultObject != null) {
return resultObject.toString();
} else {
return "";
}
}
/**
* 设置参数
*
* @param methodName
* @param paramName
* @param req
* @return
*/
public static SoapObject setRequestParam(String methodName,
String paramName, String req) {
// 实例化SoapObject对象,并指定命名空间和方法名
SoapObject request = new SoapObject(Contants.nameSpace, methodName);
if (!req.equals("")) {
// 设置参数
request.addProperty(paramName, req);
}
return request;
}
/**
* 参数设置,当有多个参数时调用这个方法
*
* @param method
* @param map
* @return
*/
public static SoapObject setRequestParam(String methodName,
Map<String, String> map) {
// 实例化SoapObject对象,并指定命名空间和方法名
SoapObject request = new SoapObject(Contants.nameSpace, methodName);
if (map.size() > 0) {
// 遍历map集合,获取键值对
for (java.util.Map.Entry<String, String> entry : map.entrySet()) {
String paramName = entry.getKey();
String paramKey = entry.getValue();
// 设置到请求体中
request.addProperty(paramName, paramKey);
}
}
return request;
}
}
=========================================================代码完毕
下面是用法:
SoapObject request = SaopUtil.setRequestParam(Contants.getLisAllPo, "lsId", mID);
// 请求服务器
json = SaopUtil.request(request);
或者
Map<String, String> map = new HashMap<String, String>();
// 封装参数
map.put("absClsId", id + "");
map.put("page", page + "");
// 这是初期入库的请求结构信息
// 设置参数
SoapObject request = SaopUtil.setRequestParam(Contants.getPartOccurence, map);
// 请求服务器
String json = SaopUtil.request(request);
有几点需要解释一下:
第一,命名空间和方法名,命名空间与服务器端命名空间保持一致,服务器端通常如下
@WebService(targetNamespace = "xxx")
@SOAPBinding(style = Style.RPC)
public interface XXX{
}
因此,客户端的命名空间也是"xxx",Contants.nameSpace=“xxx”。
第二,wsdl地址
Contants.wsdl = "http://" + 服务器地址 + ":"+服务器端口号+ "/Manager/webService/ws_WareHouse(括号前面的是自定义路径,在服务器的xml中可以配置)?wsdl";
第三,在activity中访问网络,要添加严苛模式。可以放到BaseActivity中
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedRegistrationObjects()
.detectLeakedClosableObjects().penaltyLog().penaltyDeath()
.build());
相关阅读
VRRP简介: 定义: 虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚
华为igmp 协议 pdf:下载 链接: https://pan.baidu.com/s/1geEqpzH转载请注明:点击打http://blog.csdn.net/shanzhizi/article/det
参考文献:Device Class Definition for Human Interface Devices(HID) 用于描述HID功能特征的有三个值:Class SubClass Int
TLV格式及编码https://blog.csdn.net/defeny/article/details/53144535/* renamed from: oicq.wlogin_sdk.request.l */image.p
经过一个下午的摸索,研究出来了POP3与SMTP的使用方法,下面就来总结一下这两个邮箱服务器协议的使用方法。 1.SMTP协议 使用之前,需要