二进制文件的处理(基于前面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

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

被折叠的 条评论
为什么被折叠?



