`
umbrellall1
  • 浏览: 146330 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

webservice android 设置head头发送 获取

阅读更多

android 发送方法

//里面地址对应上面图片的namespace  
		 SoapObject request = new SoapObject("http://webservice.wzkj.com/", "hello"); 
		
		//这个是配置参数  
		        request.addProperty("name","dddddddddddd");  
		  
		          SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);  
		          Element[] header = new Element[1]; 
		          header[0] = new Element().createElement("http://webservice.wzkj.com/","hello"); 
		          header[0].setAttribute("http://webservice.wzkj.com/","token","xiebuqing");   
		          
		          envelope.headerOut=header; 
		          envelope.bodyOut = request;
		          envelope.setOutputSoapObject(request); 
		          // 设置是否调用的是dotNet开发的WebService  
		          envelope.dotNet = false;
		          try {  
		//对应图片上的soap:address   
		              HttpTransportSE androidHttpTransport = new HttpTransportSE("http://127.0.0.1:8080/wzkj/webservice/helloworld");  
		//call的第一个参数对应图片上的soapAction=""  
		              androidHttpTransport.call("", envelope);  
		              SoapObject result = (SoapObject)envelope.bodyIn;  
		//这里我获取第一个数据  
		              System.out.println(result.getProperty(0).toString());  
		          } catch (Exception e) {  
		              e.printStackTrace();  
		          }  




通过抓包工工具获取到格式

<v:Envelope xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\" xmlns:c=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:v=\"http://schemas.xmlsoap.org/soap/envelope/\">
<v:Header>
	<n0:hello n0:token=\"xiebuqing\" xmlns:n0=\"http://webservice.wzkj.com/\" />
</v:Header>
	<v:Body>
		<n1:hello id=\"o0\" c:root=\"1\" xmlns:n1=\"http://webservice.wzkj.com/\">
			<name i:type=\"d:string\">
				dddddddddddd
			</name>
		</n1:hello>
	</v:Body>
</v:Envelope>




web 端口发送的格式


<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">
	<soap:Header>
		<tns:RequestSOAPHeader xmlns:tns=\"http://192.168.1.113:8080/wzkj/webservice/helloworld\">
			<tns:spId>
				zhong
			</tns:spId>
			<tns:spPassword>
				guo
			</tns:spPassword>
		</tns:RequestSOAPHeader>
	</soap:Header>
<ns2:hello xmlns:ns2=\"http://webservice.wzkj.com/\">
	<name>
		ddd
	</name>
</ns2:hello>
</soap:Body>
</soap:Envelope>




在head中两个格式不一样需要在获取的时候作解析




/**
 * @FileName   : SOAPAuthIntercepter
 * @Copy Right : WZKJ Technology Ltd
 * @Comments   : soap认证拦截器
 * @Author     :liyulong
 * @Create Date: 2014.6.23
 * @Modified By:
 * @Modified Date:
 * @Why & What is modified
 * @version   : 1.0
 */

package com.wzkj.webservice.auth;

import java.util.List;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import org.apache.cxf.binding.soap.SoapHeader;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.saaj.SAAJInInterceptor;
import org.apache.cxf.headers.Header;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.springframework.beans.factory.annotation.Autowired;
import org.w3c.dom.Element;

import com.wzkj.core.util.BlowfishUtil;
import com.wzkj.web.entity.Ciphertext;
import com.wzkj.web.mapper.CipherTextMapper;
public class SOAPAuthIntercepter  extends AbstractPhaseInterceptor<SoapMessage>{
	private SAAJInInterceptor saa = new SAAJInInterceptor();
	public String token;
	@Autowired
	private CipherTextMapper cipherTextMapper;
	public SOAPAuthIntercepter(String phase) {
		super(phase);
	}
	public SOAPAuthIntercepter(){  
		// 指定该拦截器在哪个阶段被激发
		super(Phase.PRE_INVOKE);
	}  
	  
	/**
	 * 处理消息
	 * */
	public void handleMessage(SoapMessage message) throws Fault {
        SOAPMessage mess = message.getContent(SOAPMessage.class);
          //判断消息是否为空
        if (mess == null) {
        	saa.handleMessage(message);
        	mess = message.getContent(SOAPMessage.class);
        }
        
        SOAPHeader head = null;
        try {
        	head = mess.getSOAPHeader();
        } catch (Exception e) {
        	e.printStackTrace();
        }
        
        if (head == null) {
        	throw new Fault(new SOAPException("SOAP消息头格式不对!"));
        }
        
  		// 获取SOAP消息的全部头
  		List<Header> headers = message.getHeaders();
  		if (null == headers || headers.size() < 1) {
  			throw new Fault(new SOAPException("SOAP消息头格式不对!"));
  		}
  		
  		//认证token令牌
  		if(!checkQnameHeader(headers)){
  			throw new Fault(new SOAPException("认证失败"));
  		}
	}

	
	/**
	* 认证token令牌
	* @param headers 消息体
	* @return boolean
	*/
	private boolean checkQnameHeader(List<Header> headers) {
		SoapHeader soapHeader = (SoapHeader) headers.get(0);
		Element element = (Element) soapHeader.getObject();
  		String token = element.getAttribute("n0:token");
  		Ciphertext cipher = cipherTextMapper.getById(1);
  		BlowfishUtil chiper = new BlowfishUtil(cipher.getKey());
  		String value = chiper.decryptString(token);
		return value.equals(cipher.getText());
	}

	public String getToken() {
		return token;
	}

	public void setToken(String token) {
		this.token = token;
	}
}

分享到:
评论

相关推荐

    android webserviceandroid webserviceandroid

    ### Android WebService应用详解 #### 一、概述 在Android开发中,客户端应用程序与服务器端进行数据交互是非常常见的需求之一。这种交互可以通过多种方式实现,其中一种常用的方式就是使用WebService。WebService...

    webservice 和android 调用客户端

    以上就是关于"webservice和android调用客户端"的相关知识点,涵盖了WebService的基本原理、Android客户端调用WebService的流程、以及可能涉及的安全和优化措施。理解并掌握这些内容对于开发Android应用与服务器的...

    android调用webservice获取天气

    在Android开发中,调用Web Service来获取天气信息是一个常见的需求。这涉及到网络通信、数据解析和用户界面展示等多个技术环节。以下将详细介绍这个过程。 首先,我们需要理解Web Service的本质。Web Service是一种...

    Android平台之Webservice详解(超详细)

    Android平台之Webservice详解(超详细),Android平台之Webservice详解(超详细),Android平台之Webservice详解(超详细)

    Android通过webservice连接Sqlserver实例

    本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增删改查操作。 首先,理解概念: 1. Android:Android是一种开源操作系统,主要用于移动设备,如智能手机和平板电脑。 2. ...

    通过webservice与android实现通信(C#与android)

    通过WebService与Android实现通信是跨平台开发中常见的一种方式,特别是在使用C#作为后端语言进行服务端开发,而Android应用作为前端时。本文将基于提供的文件信息,深入解析这一技术实现的关键步骤与原理。 ### ...

    Android通过WebService访问SQLServer

    在Android中,我们需要创建SOAP请求对象,设置必要的参数,然后发送到Web服务的URL。 7. **SQLServer数据库**: SQLServer是微软开发的关系型数据库管理系统,广泛应用于企业级应用。通过WebService,Android应用...

    Android调用WebService

    最近学习的是在android端如何去调用远程WebService,都说WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK...

    android、webService 天气预报demo

    本Demo结合了Android客户端和WebService技术,为用户展示如何从远程服务器获取并展示天气预报数据。通过这个实例,我们可以深入理解Android网络编程以及与WebService的交互方式。 一、Android网络请求基础 在...

    android调用webservice获取手机归属地

    本教程将详细介绍如何在Android应用中调用WebService来获取手机归属地。 1. **理解WebService** WebService是一种基于互联网的、平台无关的服务,它允许不同系统间的应用程序之间进行通信。常见的WebService技术有...

    android 调用 Webservice源码

    在Android开发中,有时我们需要与服务器进行数据交互,这时候Webservice接口就显得尤为重要。本教程主要涉及如何在Android端调用Webservice服务,通过提供的源码实现基础的数学运算,如加、减、乘、除,并对相关技术...

    Android调用webservice进行实体对象的传递Json

    例如,如果你有一个获取用户ID的WebService方法,可以这样在Android端调用: ```java // 创建SoapObject并设置参数 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("userId", ...

    java android 调用webservice

    本篇将详细讲解如何在Android应用中使用Java调用Webservice。 一、理解Web服务 Web服务是一种基于互联网的、标准化的服务交互方式,它允许不同系统之间的应用程序共享数据和功能。常见的Web服务有SOAP(Simple ...

    android 访问webService Demo

    在这个“android 访问webService Demo”中,我们将探讨如何在Android应用中集成和使用Web Service,尤其适合初学者快速上手。 一、理解Web Service Web Service是一种跨平台的通信机制,它允许不同的应用程序通过...

    Android之Webservice详解与调用天气预报Webservice完整实例

    在Android开发中,Webservice是一种常见的数据交互方式,它允许移动应用通过网络获取远程服务器上的数据。本实例将深入探讨Android中如何使用Webservice,特别是针对天气预报服务的调用。我们将关注以下几个核心知识...

    android 调用.net webservice

    3. **获取WebService接口信息**:包括WebService的URL、命名空间、方法名以及所需的参数等。 #### 三、KSOAP2简介 KSOAP2是一个用于Android平台的SOAP客户端库,它简化了Android应用与WebService之间的交互过程。...

    DELPHI 通过WEBSERVICE获取天气预报

    DELPHI 通过WEBSERVICE获取天气预报,可获取全球,全国各省市天气预报详情

    android连接webservice的示例

    首先,让我们详细探讨Android连接.NET的WebService。DataSet是一种在.NET框架中广泛使用的数据容器,它能够存储和操作多表数据。在Android中连接到这样的服务,你需要使用KSOAP2库,这是一个轻量级的SOAP客户端库,...

    delphi XE5 ANDROID平台 调用 webservice并访问操作MSSQL数据库

    Delphi XE5 Android 平台调用 Webservice 并访问操作 MSSQL 数据库 Delphi XE5 是一款功能强大且灵活的开发环境,为开发者提供了跨平台的开发体验。在 Android 平台上,Delphi XE5 提供了强大的支持,允许开发者...

Global site tag (gtag.js) - Google Analytics