webservice(九)在webservice中处理二进制(上传文件)

本文介绍了如何在WebService中处理二进制数据,特别是通过MTOM(Message Transmission Optimization Mechanism)方式进行文件上传。首先,通过SOAPBinding获取绑定对象,然后详细讲解了在wsdl文件和客户端代码中的修改步骤,以支持二进制文件的传输。

二进制文件的处理(基于前面webservice七的实现后,添加上传功能)
1.@MTOM
    1.1.修改wsdl加入如下代码:
            <xsd:complexType name="upload">
                <xsd:sequence>
                    <xsd:element name="file" type="xsd:base64Binary"></xsd:element>
                </xsd:sequence>
            </xsd:complexType>
            另加入与其他方法同样的代码
   1. 2.在实现类中加入@MTOM
        生成服务器类文件
        服务器参数为:byte[] file
        *只能在tomcat服务器中使用MTOM,在默认的Jetty服务器里面无法进行MTOM传递
   1. 3.在使用port时
            port = us.getUserServicePort(new MTOMFeature());
2.@BindingType(SOAPBinding.SOAP11HTTP_MTOM_BINDING)
    2.1.修改wsdl加入如下代码:
            如果记不住,可以发布服务然后访问xsd=1来查看
            <xsd:complexType name="upload">
                <xsd:sequence>
                    <xsd:element xmlns:xmime="http://www.w3.org/2005/05/xmlmime" name="file" xmime:expectedContentTypes="application/octet-stream" type="xsd:base64Binary" form="qualified"/>
                </xsd:sequence>
            </xsd:complexType>
            另加入与其他方法同样的代码
    2.2.在实现类中加入@MTOM
        生成服务器类文件
        服务器参数为:@XmlMimeType("application/octet-stream")DataHandler handler
    2.3.在使用port时
            方式一:port = us.getUserServicePort(new MTOMFeature());
            方式二:port = us.getUserServicePort();
                    BindingProvider bp = (BindingProvider)port;

                    SOAPBinding binding = (SOAPBinding) bp.getBinding();

方式一:MTOM方式:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:tns="http://service.zttc.edu.cn" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="UserService"
	targetNamespace="http://service.zttc.edu.cn">
	<!-- wrappered 推荐使用的方式 -->
	<wsdl:types>
		<xsd:schema targetNamespace="http://service.zttc.edu.cn">
			<!-- import是在导入的时候加入了命名空间 -->
			<!-- <xsd:import namespace="http://service.zttc.edu.cn" schemaLocation="user.xsd"/> -->

			<!-- include是在当前的schema中加入了命名空间 -->
			<!-- <xsd:include schemaLocation="user.xsd"/> -->
			<xsd:element name="add" type="tns:add"></xsd:element>
			<xsd:element name="addResponse" type="tns:addResponse"></xsd:element>
			<xsd:element name="delete" type="tns:delete"></xsd:element>
			<xsd:element name="deleteResponse" type="tns:deleteResponse"></xsd:element>
			<xsd:element name="list" type="tns:list"></xsd:element>
			<xsd:element name="listResponse" type="tns:listResponse"></xsd:element>
			<xsd:element name="login" type="tns:login"></xsd:element>
			<xsd:element name="loginResponse" type="tns:loginResponse"></xsd:element>

			<!-- 1.添加二进制文件 -->
			<xsd:element name="upload" type="tns:upload"></xsd:element>
			<xsd:element name="uploadResponse" type="tns:uploadResponse"></x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值