`
wangleyiang
  • 浏览: 220116 次
社区版块
存档分类
最新评论

Android 中使用SOAP协议

阅读更多

    SOAP协议:简单对象访问协议(Simple Object Access Protocol)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。

    在Android上使用SOAP协议比较常用的方式是第三方的库,比如:kSOAP 2:http://ksoap2.sourceforge.net。

    下面给出一个使用OutputStreamWriter实现的SOAP协议,比较简单,直接上主要代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;

public class SopaObject {

	private String nameSapce = null;

	private String method = null;

	private StringBuffer soapXmlOut = null;

	private StringBuilder soapXmlIn = null;

	private HashMap<String, String> headMap = null;

	private HashMap<String, String> bodyMap = null;

	private String responseCode = null;

	private String responseMessage = null;

	public SopaObject(String nameSapce, String method) {

		this.nameSapce = nameSapce;

		this.method = method;

		headMap = new HashMap<String, String>();

		bodyMap = new HashMap<String, String>();

		soapXmlOut = new StringBuffer();
		soapXmlOut.append("<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");

	}

	public void setSoapHead(HashMap<String, String> headMap) {

		this.headMap = headMap;

	}

	public void setSoapBody(HashMap<String, String> bodyMap) {

		this.bodyMap = bodyMap;

	}

	public void request(String urlPath) {

		try {

			URL url = new URL(urlPath);
			URLConnection connection = url.openConnection();
			connection.setDoOutput(true);
			connection.setRequestProperty("Pragma:", "no-cache");
			connection.setRequestProperty("Cache-Control", "no-cache");
			connection.setRequestProperty("Content-Type", "text/xml");

			OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());

			// Head
			Object[] headKeys = headMap.keySet().toArray();
			soapXmlOut.append("<soap:Header><Credentials xmlns=\"" + nameSapce + "\">");
			for (Object key : headKeys) {
				soapXmlOut.append("<" + key + ">" + headMap.get(key) + "</" + key + ">");
			}
			soapXmlOut.append("</Credentials></soap:Header>");

			// Body
			Object[] bodyKeys = bodyMap.keySet().toArray();
			soapXmlOut.append("<soap:Body><" + method + " xmlns=\"" + nameSapce + "\">");
			for (Object key : bodyKeys) {
				soapXmlOut.append("<" + key + ">" + bodyMap.get(key) + "</" + key + ">");
			}
			soapXmlOut.append("</" + method + "></soap:Body>");
			soapXmlOut.append("</soap:Envelope>");

			// Send
			out.write(new String(soapXmlOut.toString().getBytes("UTF-8")));

			// Flush and close
			out.flush();
			out.close();

			// Get response
			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
			soapXmlIn = new StringBuilder();
			String line = null;
			for (line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine()) {
				soapXmlIn.append(line);
			}
			
			System.out.println("wangleyiang:" + soapXmlIn.toString());
			
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

     测试一下,使用一个基于WebService的气象服务:http://www.webservicex.net/globalweather.asmx,测试代码如下:

        SopaObject object = new SopaObject("http://www.webservicex.net", "GetCitiesByCountry");
        
        HashMap<String, String> map = new HashMap<String, String>();
    	map.put("CountryName", "China");
        object.setSoapBody(map);
        
        object.request("http://www.webservicex.net/globalweather.asmx");

     SoapObject的方法比较少,意思比较明确,就不做说明了!:)

 

 

分享到:
评论

相关推荐

    android端基于soap协议的webservice接口的调用demo

    在这个示例中,我们展示了如何在Android应用中使用KSOAP2库调用SOAP协议的Web Service接口。请注意,实际应用中可能需要根据具体的服务接口调整请求参数和处理响应的方式。同时,确保正确处理网络权限和异常情况,以...

    android开发soap协议查询天气预报功能源码

    3. Android中使用SOAP: 在Android应用中,首先需要添加KSOAP2库到项目的依赖。接着,创建SOAP请求对象,设置服务的URL、命名空间、操作方法以及参数。例如,你可能需要设置一个名为`GetWeatherInfo`的操作,并传入...

    Android 基于 Retrofit2+Okhttp3 通过SOAP协议请求WebService

    至此,你已经成功地使用Retrofit2+OkHttp3实现了Android应用通过SOAP协议请求Web Service。在实际项目中,你需要根据具体的SOAP服务来调整请求XML的结构和SOAPAction头信息。同时,记得处理网络请求的异步操作,避免...

    Android与服务器端数据交互(基于SOAP协议整合android webservice)

    KSOAP2是一个专门为Android设计的轻量级库,它允许Android应用与使用SOAP协议的Web服务进行交互。你需要下载`ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar`包,并将其添加到Android项目的lib目录下,...

    Android 基于 Retrofit2+Okhttp3 通过SOAP协议请求WebService.zip

    总结,Android应用基于Retrofit2+Okhttp3通过SOAP协议请求WebService是一种有效的解决方案,它简化了网络调用的复杂性,同时利用了OkHttp3的高性能特性。通过定义接口、配置Retrofit实例、创建SOAP请求和处理响应,...

    Android Retrofit2+Okhttp3+Rxjava通过SOAP协议请求WebService

    在Android开发中,有时我们需要与使用SOAP(Simple Object Access Protocol)协议的Web服务进行交互。SOAP是一种基于XML的协议,用于在应用程序之间交换结构化和类型化的信息。本篇文章将详细探讨如何使用Retrofit2...

    Android利用SOAP协议调用天气预报服务.pdf

    Android系统平台是目前智能手机市场中使用最为广泛的开源平台之一,它允许开发者利用多种工具和语言来创建手机应用程序。本文探讨了如何在Android平台上利用SOAP协议调用天气预报服务,开发出能够实时获取天气信息的...

    Android使用Soap库连接ASP.NET WebService客户端

    本篇将深入探讨如何使用ksoap2-android库在Android应用中连接并调用ASP.NET WebService。 首先,ksoap2-android是一个轻量级的库,专门用于在Android平台上处理SOAP(Simple Object Access Protocol)消息。SOAP是...

    Android利用Soap协议跨平台调用服务方法.pdf

    在Android应用开发中,利用Soap协议调用Web Service或WCF,需要借助Google专门为Android开发的ksoap2工具包。ksoap2是一个轻量级的库,使得Android客户端可以轻松地处理Soap请求和响应,从而实现跨平台的通信。它...

    Soap2Android实例

    在这个实例中,我们将深入探讨如何使用Soap2Android来实现这一目标。 1. SOAP简介: SOAP是一种基于XML的数据交换协议,用于在分布式环境中交换结构化信息。它允许服务提供者和消费者通过HTTP或其他传输协议进行...

    android上的soap裁剪包

    本文将深入探讨如何在Android上使用SOAP进行数据交互,并结合压缩包中的"org"文件夹内容,分析可能包含的库或工具。 首先,SOAP通信通常涉及以下步骤: 1. **创建SOAP消息**:Android应用需要构建一个符合SOAP规范...

    android利用SOAP实现天气预报

    总之,通过理解SOAP协议的工作原理,结合Android的网络请求库,开发者可以轻松地在Android应用中集成外部Web服务,获取实时的天气预报数据。同时,对于任何网络请求,都应考虑性能优化和用户体验,如缓存策略、错误...

    Android Soap类库

    在Android开发中,与远程服务器进行数据交互是常见的需求,而SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中交换结构化和类型化信息。虽然RESTful API在现代应用中更为流行,但某些...

    android soap开发

    在Android应用开发中,SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的协议,它基于XML标准,常用于Web服务交互。本示例着重于如何在Android平台上进行SOAP开发,以便应用程序能够与远程Web服务...

    Android 下soap线程池并发请求

    在Android开发中,有时我们需要与Web服务进行交互,SOAP(Simple Object Access Protocol)是一种常见的用于交换结构化信息的标准协议。本篇文章将详细讲解如何在Android环境下实现SOAP线程池并发请求,以提高应用...

    Android与服务器端数据交互(基于SOAP协议整合android+webservice)_.docx

    在Android应用中,通过SOAP协议与Web服务进行交互,能够实现跨平台的数据交换和远程服务调用等功能。 #### 二、Web Service简介 Web Service是一种支持HTTP协议的服务,它可以将不同的应用程序、操作系统和服务...

    android Soap 封装

    在Android开发中,SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的协议,常用于与Web服务交互。本文将详细讲解如何在Android中进行SOAP的封装,以便于更高效地进行API调用。 首先,我们需要理解...

    Android SOAP2 WEBSERVICE查询天气

    本篇文章将深入探讨如何使用SOAP2在Android应用中查询天气信息。 首先,我们需要理解SOAP的基本概念。SOAP是一种基于XML的协议,用于在不同系统之间交换结构化和类型化的信息。它允许客户端通过HTTP或HTTPS等传输...

    onvif协议在Android上的实现

    总的来说,实现ONVIF协议在Android上是一个涉及网络通信、XML解析、媒体处理和SOAP交互的复杂过程。虽然挑战重重,但通过合理的设计和编程,我们可以构建出一款能够接入各种ONVIF设备的高效监控应用。

Global site tag (gtag.js) - Google Analytics