网络请求工具类WebServiceUtils

简介: 网络请求工具类WebServiceUtils

如果对WebService一无所知的话,建议先看看这两篇博客,对你WebService很有帮助。


http://blog.csdn.net/eyu8874521/article/details/9125987

http://blog.csdn.net/xiaanming/article/details/16871117


本人也是菜鸟一名,WebService已经是很老的技术了,但现在仍有使用,刚开始接触的时候,是无从入手呀,看了上面几篇文章以后,渐渐的会使用了,这里感谢网上开源的作者和文章,网上基本没有封装的,这里通过这个项目下来,学会了封装,虽然不难,但对于我这种刚出道的菜鸟来说,还是很不容易的,这里记录下来,希望也能帮助到其他的同行。实践才是检验真理的唯一标准,全部代码如下,有注释:

package com.example.applicationicon;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpResponseException;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.os.Handler;
import android.os.Message;
/**
 * 访问WebService的工具类
 * 
 * 
 * @author caijin
 * 
 */
public class WebServiceUtils {
public static final String WEB_SERVER_URL = "";
// 含有3个线程的线程池
private static final ExecutorService executorService = Executors
.newFixedThreadPool(3);
// 命名空间
private static final String NAMESPACE = "";
/**
* 
* @param url
*            WebService服务器地址
* @param methodName
*            WebService的调用方法名
* @param properties
*            WebService的参数
* @param webServiceCallBack
*            回调接口
*/
public static void callWebService(String url, final String methodName,
HashMap<String, String> properties,
final WebServiceCallBack webServiceCallBack) {
// 创建HttpTransportSE对象,传递WebService服务器地址
final HttpTransportSE httpTransportSE = new HttpTransportSE(url);
// 创建SoapObject对象
SoapObject soapObject = new SoapObject(NAMESPACE, methodName);
// SoapObject添加参数
//写真实的变量名也没有用,传递参数必须是arg开头,必须是arg0 ,arg1 一直拍下去
if (properties != null) {
for (Iterator<Map.Entry<String, String>> it = properties.entrySet()
.iterator(); it.hasNext();) {
Map.Entry<String, String> entry = it.next();
soapObject.addProperty(entry.getKey(), entry.getValue());
}
}
// 实例化SoapSerializationEnvelope,传入WebService的SOAP协议的版本号 
//tomcat 7.055 for 64  jdk 1.6 for 64  web3.0 这里写 ver12 ,如果是ver11会报 http 415错误
final SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
SoapEnvelope.VER12);
// 设置是否调用的是.Net开发的WebService
soapEnvelope.bodyOut = soapObject;
soapEnvelope.dotNet = false;//如果调用的是.Net的WebService,这里为true,否则为false,不然调用会不成功
soapEnvelope.setOutputSoapObject(soapObject);
httpTransportSE.debug = true;
// 用于子线程与主线程通信的Handler
final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 将返回值回调到callBack的参数中
webServiceCallBack.callBack((Object) msg.obj);
}
};
// 开启线程去访问WebService
executorService.submit(new Runnable() {
@Override
public void run() {
Object resultSoapObject = null;
try {
httpTransportSE.call(WEB_SERVER_URL + methodName, soapEnvelope);
if (soapEnvelope.getResponse() != null) {
// 获取服务器响应返回的SoapObject
resultSoapObject = (Object) soapEnvelope.bodyOut;
}
} catch (HttpResponseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} finally {
// 将获取的消息利用Handler发送到主线程
mHandler.sendMessage(mHandler.obtainMessage(0,
resultSoapObject));
}
}
});
}
/**
* 
* 
* @author caijin
* 
*/
public interface WebServiceCallBack {
public void callBack(Object result);
}
}


最后附上下载地址,有需要的可以前去

http://download.csdn.net/detail/u014727709/9691554


这里补充一下访问webservice需要的jar包

http://download.csdn.net/detail/u014727709/9692823


欢迎start,欢迎评论,欢迎指正



相关文章
|
JSON API Apache
基于OkHttp网络通信工具类(发送get、post请求、文件上传和下载)
okhttp是专注于提升网络连接效率的http客户端。 优点: 1、它能实现同一ip和端口的请求重用一个socket,这种方式能大大降低网络连接的时间,和每次请求都建立socket,再断开socket的方式相比,降低了服务器服务器的压力。 2、okhttp 对http和https都有良好的支持。 3、okhttp 不用担心android版本变换的困扰。 4、成熟的网络请求解决方案,比HttpURLConnection更好用。 5、支持异步发送网络请求,响应可在线程处理。
HTTP请求处理 get/post工具类 验证网络DEMO
HTTP请求处理 get/post工具类 验证网络DEMO
52 0
|
Android开发
Android WIFI是否连接,网络状态监测工具类
Android WIFI是否连接,网络状态监测工具类
292 0
java 获取网络接口信息,看这一篇就行了 | Java工具类
java 获取网络接口信息,看这一篇就行了 | Java工具类
|
JSON Java 测试技术
手撸了一个网络请求工具类,开发速度迅速提升了300%
在上一篇文章中,我们详细的介绍了RestTemplate工具类的用法,相比直接使用Apache的HttpClient进行网络传输,采用RestTemplate开发代码确实简化了很多,甚至可以做到傻瓜式操作,但是基于当前的团队人员开发习惯,我们可不可以继续基于RestTemplate再做一层封装呢?以便于操作Http网络请求,更加简单、便捷!
|
数据格式 JSON
OkHttp网络连接封装工具类
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/50614615     最近,临近春节放假,把自己最近项目中使用 的okhttp使用做个总结,将自己的工具类贡献出来。
2114 0