Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jax-ws-webservice客户端在MTOM消息多部分请求中将内容类型从application/octet更改为image/jpeg_Java_Web Services_Soap_Content Type_Mtom - Fatal编程技术网

Java 使用jax-ws-webservice客户端在MTOM消息多部分请求中将内容类型从application/octet更改为image/jpeg

Java 使用jax-ws-webservice客户端在MTOM消息多部分请求中将内容类型从application/octet更改为image/jpeg,java,web-services,soap,content-type,mtom,Java,Web Services,Soap,Content Type,Mtom,在使用.Net应用程序公开的ImageUpload Web服务时,通过从WSImport生成客户端并发送请求来运行它时,我遇到了一个SOAP错误异常。而使用soapui+MTOM时,请求工作得非常完美 我的代码如下 POST /ServerURL HTTP/1.1 Accept: text/xml, multipart/related Content-Type: multipart/related;start="<rootpart*b1894218-9121-46e1-b3e6-0d966

在使用.Net应用程序公开的ImageUpload Web服务时,通过从WSImport生成客户端并发送请求来运行它时,我遇到了一个SOAP错误异常。而使用soapui+MTOM时,请求工作得非常完美

我的代码如下

POST /ServerURL HTTP/1.1
Accept: text/xml, multipart/related
Content-Type: multipart/related;start="<rootpart*b1894218-9121-46e1-b3e6-0d966c86ea12@example.jaxws.sun.com>";type="application/xop+xml";boundary="uuid:b1894218-9121-46e1-b3e6-0d966c86ea12";start-info="text/xml"
SOAPAction: ""
User-Agent: JAX-WS RI 2.2.4-b01
Host: systemtest
Connection: keep-alive
Content-Length: 37300


--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12
Content-Id: <rootpart*b1894218-9121-46e1-b3e6-0d966c86ea12@example.jaxws.sun.com>
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary

<?xml version="1.0" ?>
<S:Envelope>
    <S:Body>
        <ns4:ImageStoreRequest>
            <ns4:request>
                <ns2:MessageHeader>
                    <ns2:CorrelationID></ns2:CorrelationID>
                    <ns2:CreatedTs></ns2:CreatedTs>
                    <ns2:From></ns2:From>
                    <ns2:MessageID></ns2:MessageID>
                    <ns2:SentTs></ns2:SentTs>
                </ns2:MessageHeader>
                <ns2:MessageBody>{JSON Data}</ns2:MessageBody>
                <ns2:ArrayOfImageData>
                    <ns2:ImageData>
                        <ns5:base64Binary>
                            <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:89fe782f-78f5-4d63-b37d-69131a8df9a3@example.jaxws.sun.com"/>
                        </ns5:base64Binary>
                        <ns2:Name></ns2:Name>
                    </ns2:ImageData>
                </ns2:ArrayOfImageData>
                <ns2:SessionGUID></ns2:SessionGUID>
            </ns4:request>
        </ns4:ImageStoreRequest>
    </S:Body>
</S:Envelope>
--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12
Content-Id: <89fe782f-78f5-4d63-b37d-69131a8df9a3@example.jaxws.sun.com>
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

ExifII*DuckyG+http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:FC9787C7C6F211E182C9CE33D84E1927" xmpMM:DocumentID="xmp.did:FC9787C8C6F211E182C9CE33D84E1927"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FC9787C5C6F211E182C9CE33D84E1927" stRef:documentID="xmp.did:FC9787C6C6F211E182C9CE33D84E1927"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>&Adobed

$@Bbb





--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12--
公共类TestClass{
公共静态void main(字符串参数[]){
字符串remoteURL=“MyURL”;
字符串端口=”;
字符串imageFilePath=“”;
字符串imageName=“70d08e54-4a5e-4c95-88ba-4c791c2da55e.bmp”;
字符串相关ID=“70fd8ae9-56c9-43b3-b4d9-3d497da05b12”;
字符串createdTS=“yyyy-MM-dd'T'HH:MM:ss'Z';
String sents=“yyyy-MM-dd'T'HH:MM:ss'Z';
字符串from=“GUID”;
字符串messageId=“GUID”;
字符串sessionGUID=“GUID”;
试一试{
URL serviceURL=新URL(远程URL);
ImageStoreService IIImageStoreService=新ImageStoreService(
服务URL);
IImageStoreService=IImageStoreService
.GetBasicHttpBindingIIImageStoreService(新的MTOMFeature(true));
//将代理强制转换为BindingProvider
BindingProvider BindingProvider=(BindingProvider)服务;
ObjectFactory ObjectFactory=新的ObjectFactory();
org.datacontract.schemas._2004._07.phoenixinteractive_expression_common.ObjectFactory objectFactoryCommon=new org.datacontract.schemas._2004._07.phoenixinteractive_expression_common.ObjectFactory();
com.microsoft.schemas._2003._10.serialization.objectFactorySerialization=new com.microsoft.schemas._2003._10.serialization.ObjectFactory();
ImageStoreRequest ImageStoreRequest=objectFactory.CreateMageStoreRequest();
org.datacontract.schemas._2004._07.phoenixinteractive_expression_common.ImageStoreRequest imageStoreRequestData=objectFactoryCommon.createImageStoreRequest();
MessageHeader MessageHeader=objectFactoryCommon.createMessageHeader();
messageHeader.setCorrelationID(correlationId);
SimpleDataFormat sdfCreatedTS=新SimpleDataFormat(createdTS);
字符串createdTSDate=sdfCreatedTS.format(new Date());
SimpleDataFormat sdfSentTS=新的SimpleDataFormat(sentTS);
字符串sentTSDate=sdfSentTS.format(new Date());
XMLGregorianCalendar cal=DatatypeFactory.newInstance().newXMLGregorianCalendar(createdTSDate);
XMLGregorianCalendar calSent=DatatypeFactory.newInstance().newXMLGregorianCalendar(sentTSDate);
messageHeader.setCreatedTs(cal);
messageHeader.setFrom(objectFactoryCommon.createMessageHeaderFrom(from));
messageHeader.setMessageID(messageId);
messageHeader.setSents(objectFactoryCommon.CreateMessageHeaderSents(calSent));
imageStoreRequestData.setMessageHeader(objectFactoryCommon.createMessageHeader(messageHeader));
imageStoreRequestData.setSessionGUID(sessionGUID);
imageStoreRequestData.setMessageBody(objectFactoryCommon.createGenericMessageMessageBody(“{”
+“\“图像\上传\数据\”:{”
+“会话GUID\:\“GUID\”
+“\”文件\“:{”
+“\“ImageName\”:\“MyImagePath”
+ " } "
+ "}"
+"}"));
ImageData imgData=objectFactoryCommon.createImageData();
setData(objectFactorySerialization.createBase64Binary(Files.readAllBytes(Path.get(“Path”,“ImageName”))));
setName(objectFactoryCommon.createImageDataName(“ImageName”);
ArrayOfImageData ArrayOfImageData=objectFactoryCommon.createArrayOfImageData();
List imgDataList=arrayOfImageData.getImageData();
imgDataList.add(imgData);
imageStoreRequestData.setImageDataList(objectFactoryCommon.createArrayOfImageData(arrayOfImageData));
setRequest(objectFactory.createImageStoreRequestRequest(imageStoreRequestData));
System.out.println(imageStoreRequest.getRequest().getValue().getImageDataList());
服务.imageStoreRequest(imageStoreRequestData);
}捕获(例外e){
e、 printStackTrace();
系统输出打印项次(“错误”+e);
}
}
}
发送请求后,http请求的多部分将内容类型显示为application/octet,我想更改为image/jpeg。尝试将MessageContext.HTTP_请求_头添加到bindingProvider.getRequestContext()映射,但请求内容类型仍显示application/octet

wireshark记录如下所示

POST /ServerURL HTTP/1.1
Accept: text/xml, multipart/related
Content-Type: multipart/related;start="<rootpart*b1894218-9121-46e1-b3e6-0d966c86ea12@example.jaxws.sun.com>";type="application/xop+xml";boundary="uuid:b1894218-9121-46e1-b3e6-0d966c86ea12";start-info="text/xml"
SOAPAction: ""
User-Agent: JAX-WS RI 2.2.4-b01
Host: systemtest
Connection: keep-alive
Content-Length: 37300


--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12
Content-Id: <rootpart*b1894218-9121-46e1-b3e6-0d966c86ea12@example.jaxws.sun.com>
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary

<?xml version="1.0" ?>
<S:Envelope>
    <S:Body>
        <ns4:ImageStoreRequest>
            <ns4:request>
                <ns2:MessageHeader>
                    <ns2:CorrelationID></ns2:CorrelationID>
                    <ns2:CreatedTs></ns2:CreatedTs>
                    <ns2:From></ns2:From>
                    <ns2:MessageID></ns2:MessageID>
                    <ns2:SentTs></ns2:SentTs>
                </ns2:MessageHeader>
                <ns2:MessageBody>{JSON Data}</ns2:MessageBody>
                <ns2:ArrayOfImageData>
                    <ns2:ImageData>
                        <ns5:base64Binary>
                            <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:89fe782f-78f5-4d63-b37d-69131a8df9a3@example.jaxws.sun.com"/>
                        </ns5:base64Binary>
                        <ns2:Name></ns2:Name>
                    </ns2:ImageData>
                </ns2:ArrayOfImageData>
                <ns2:SessionGUID></ns2:SessionGUID>
            </ns4:request>
        </ns4:ImageStoreRequest>
    </S:Body>
</S:Envelope>
--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12
Content-Id: <89fe782f-78f5-4d63-b37d-69131a8df9a3@example.jaxws.sun.com>
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

ExifII*DuckyG+http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:FC9787C7C6F211E182C9CE33D84E1927" xmpMM:DocumentID="xmp.did:FC9787C8C6F211E182C9CE33D84E1927"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FC9787C5C6F211E182C9CE33D84E1927" stRef:documentID="xmp.did:FC9787C6C6F211E182C9CE33D84E1927"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>&Adobed

$@Bbb





--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12--
POST/ServerURL HTTP/1.1
接受:text/xml,多部分/相关
内容类型:多部分/相关;start=“”;type=“应用程序/xop+xml”;边界=“uuid:b1894218-9121-46e1-b3e6-0d966c86ea12”;start info=“text/xml”
SOAPAction:“
用户代理:JAX-WSRI 2.2.4-b01
主持人:系统测试
连接:保持活力
内容长度:37300
--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12
内容Id:
内容类型:应用程序/xop+xml;字符集=utf-8;type=“text/xml”
内容传输编码:二进制
{JSON Data}
--uuid:b1894218-9121-46e1-b3e6-0d966c86ea12
内容Id:
内容类型:应用程序/八位字节流
内容传输编码:二进制
ExifII*DuckyG+http://ns.adobe.com/xap/1.0/        &阿多贝
$@Bbb
--uuid:b1894218-9121-46e1-b3e6-0d9