web-services - 带有附件的 CXF SOAP 请求中缺少 CID 前缀
问题描述
我正在尝试使用 SoapWithAttachments 方法调用 Web 服务。我的客户端软件是 JAVA,它使用 Apache CXF (v2.5.11) 从 WSDL 生成类。
当我运行它时,我在日志中打印 SOAP 请求,并看到用于引用附件的 CID 前缀(“cid:”)丢失。附件的内容 ID 正确,但缺少前缀。最后,服务器返回给我一个“空附件”错误。
有一个我的软件打印的 SOAP 请求示例:
ID: 1
Address: ****
Encoding: UTF-8
Http-Method: POST
Content-Type: multipart/related; type="text/xml"; boundary="uuid:5210b5e9-ee88-4b88-9330-f95ee62bb28e"; start="<root.message@cxf.apache.org>"; start-info="text/xml"
Headers: {Accept=[*/*], SOAPAction=["****"]}
Payload: --uuid:5210b5e9-ee88-4b88-9330-f95ee62bb28e
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
</soap:Header>
<soap:Body>
<metodo>
<documento>
<contenido href="8849d331-555b-4ab4-b90d-6ff0996cadcc@apache.org"/>
<hash>0p9oDCPlhlxNemvtT5tj6e46SHdPWLOxTi1sLJBeCz4=</hash>
</documento>
</metodo>
</soap:Body>
</soap:Envelope>
--uuid:5210b5e9-ee88-4b88-9330-f95ee62bb28e
Content-Type: application/pdf
Content-Transfer-Encoding: binary
Content-ID: <8849d331-555b-4ab4-b90d-6ff0996cadcc@apache.org>
%PDF-1.4
%????
2 0 obj
<</Length 76/Filter/FlateDecode>>stream
x?+?r
?26S?00I?2P?5?1??
?B?4<Rsr???rR
?JS?
@?]C????
endstream
endobj
4 0 obj
<</Parent 3 0 R/Contents 2 0 R/Type/Page/Resources<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]/Font<</F1 1 0 R>>>>/MediaBox[0 0 595 842]>>
endobj
1 0 obj
<</BaseFont/Helvetica/Type/Font/Encoding/WinAnsiEncoding/Subtype/Type1>>
endobj
3 0 obj
<</ITXT(2.1.7)/Type/Pages/Count 1/Kids[4 0 R]>>
endobj
5 0 obj
<</Type/Catalog/Pages 3 0 R>>
endobj
6 0 obj
<</Producer(iText 2.1.7 by 1T3XT)/ModDate(D:20150327140035+01'00')/CreationDate(D:20150327140035+01'00')>>
endobj
xref
0 7
0000000000 65535 f
0000000314 00000 n
0000000015 00000 n
0000000402 00000 n
0000000157 00000 n
0000000465 00000 n
0000000510 00000 n
trailer
<</Root 5 0 R/ID [<5d256b5d87f178862dd33943e65718e8><ecd829bf4e1d355aef68138d0de19d76>]/Info 6 0 R/Size 7>>
startxref
632
%%EOF
--uuid:5210b5e9-ee88-4b88-9330-f95ee62bb28e--
请注意,附件确实存在,并且它具有正确的 Content-id(我想是),并且 SOAP 请求以明显正确的名称引用它。但是“cid:”前缀仍然缺失,我不知道如何添加它。
另一方面,如果我将 SOAP 请求从此处复制并粘贴到 SOAP-UI,并添加“cid:”前缀,并添加具有相同 Content-id 的附件,则请求将正确运行。
解决方案
推荐阅读
- imagemagick - google colab上moviepy中的文本剪辑(imagemagick错误)
- sql - 如何从两列查询结果中删除重复的 id 对
- php - Checkbox selected or unselected after submit
- excel - 电子表格 | 计算时差
- javascript - 在函数组件中使用 useFocusEffect 的问题
- java - 从 Recyclerrview 到 Activity 的共享元素转换
- c# - 如何在控制器中最小化更新方法
- neo4j - Neo4j加载csv很长时间
- laravel - 我可以在 graphql 方案中使用打包方法吗?
- python - 如何使用 python 请求将文件上传到烧瓶应用程序