当前位置: 首页 > 知识库问答 >
问题:

将内容ID添加到多部分实体

仲孙夕
2023-03-14

鉴于我们提出了一个多部分的要求。我们现在需要添加一个content-id。下面是我们试图用来创建多部分请求的代码:

MultipartEntity mpEntity = new MultipartEntity();
StringBody body;
try
{
    body = new StringBody( xml, "application/xml", Charset.forName( "UTF-8" ) );
    byte[] data = getBytesFromFile( image );
    ByteArrayBody bab = new ByteArrayBody( data, "image/jpeg", "test_image_cid" );
    mpEntity.addPart( "body", body );
    mpEntity.addPart( "test_image_cid", bab );

} catch ( UnsupportedEncodingException e )
{
    e.printStackTrace();
}

HttpPost request = new HttpPost("http://10.1.1.1");
request.addHeader( "Authorization", authorization_header_values );
request.addHeader( "Content-Type", "Multipart/Related" );
request.setEntity( mpEntity );
return request;

这是我们调用的Web服务所请求的:

<?xml version="1.0" encoding="utf-8"?> <request method="receipt.create"> 
   <receipt>
       <expense_id>1</expense_id>  <!-- id of expense -->
       <image>cid:xxxxxxxxxxxxx</image> <!-- content-id used on the related binary content -->
   </receipt>
</request>

这是我们从服务器获得的用于调试的信息:

POST/HTTP/1.1授权:OAuth realm=,OAuth\u version=“1.0”,OAuth\u consumer\u key=“key”,OAuth\u token=“token”,OAuth\u timestamp=“1358197676614”,OAuth\u nonce=“1111111”,OAuth\u signature\u method=“明文”,OAuth\u signature=“signature”内容类型:多部分/相关用户代理:代理内容长度:2336363主机:10.1.1.1.1连接:保持活动状态

--HPeiFlrswQmM8Mi1uoWpzJRfrnp3AMtZjpCdt内容配置: form-data; name="body"内容类型:应用程序/xml; charset=UTF-8内容传输编码: 8bit

<?xml version='1.0' encoding='UTF-8' ?>
    <request method="receipt.create">
        <receipt>
            <expense_id>979</expense_id>
            <image>cid:test_image_cid</image>
        </receipt>
    </request>

--HPEIFLRSWQMM8MI1OWPZJRFRNP3AMTZJPCDT内容处置:表单数据;name=“test\u image\u cid”;filename=“test\u image\u cid”内容类型:图像/jpeg内容传输编码:二进制

我们陷入了如何将Content-ID添加到此请求的困境。这通电话有什么明显的遗漏吗?还有其他方法来构建此请求吗?感谢任何建议!

共有1个答案

林念
2023-03-14

添加内容Id或任何其他字段,必须使用FormBodyPart。简单地说,将这些行分开:

ByteArrayBody bab = new ByteArrayBody( data, "image/jpeg", "test_image_cid" );
mpEntity.addPart( "body", body );

变成这些行:

ByteArrayBody bab = new ByteArrayBody( data, "image/png", "byte_array_image" );
FormBodyPart fbp = new FormBodyPart( "form_body_name", bab );
fbp.addField( "Content-Id", "ID_GOES_HERE" );
mpEntity.addPart( fbp );

这对你来说应该够了!

 类似资料:
  • 问题内容: 假设我有一些要将JavaScript操作添加到的链接: 当页面加载时,我给他们所有的click事件: 但让我们说之后,我添加了另一个元素,但我想给它相同的事件。我不能这样做: 因为前三个事件将包含两个事件。处理此问题的最佳方法是什么? 问题答案: 您可以将$ .on绑定到这样的dom中始终存在的父元素。 请注意: 您可以用dom中将始终存在的元素的任何父级替换,并且父级越近越好。 具有

  • 问题内容: 我想在PDF文件的每一页中添加一段文字。这样的答案很好。但是,文本将添加到页面顶部。我想在每页底部添加我的文字。我该怎么做呢? 这是代码的相关部分。 该代码是功能的一部分,该功能接受一个文件夹,读取其中的PDF文件,然后将它们合并为一个文件。因此,我想在上述循环本身中添加文本,而不是再次迭代文件。 问题答案: 请参阅《 iText in Action,第二版》的第6章,尤其是在6.4.

  • 问题内容: 我需要能够向ELF文件添加任意部分。我无法在该程序中使用GPL代码,因此BFD成为不可能。我可以使用libelf / gelf来阅读节,但是这些文档很少,因此我无法弄清楚如何添加节。有人知道怎么做这个吗?我宁愿不编写自己的ELF代码。 问题答案: 关于ELF文件标头的问题有几个(可能)相关答案。提到的接受的答案用于将部分添加到ELF文件,并且BSD bintools 声称具有BSD许可

  • 问题内容: 我有一些与它们相关联的jQueryUI按钮的项目列表。完成一个动作(删除一个项目)后,我想通过ajax重新加载列表。 唯一的问题是,当我这样做时,JQueryUI按钮不再显示,仅显示标准标记。 我知道我可以动态添加点击处理程序等,但是如何将jQueryUI 应用于它们? 问题答案: 通过ajax重新加载时,请在该上下文中调用(或使用的任何变体),如下所示: 这将 仅在响应中的*元素上运

  • 问题内容: 如何使用 CSS 属性添加 HTML 实体? 使用这样的东西只会打印到屏幕上,而不是不间断的空间: 问题答案: 您必须使用转义的unicode: 喜欢

  • 问题内容: 我想对iText执行以下操作: (1)解析现有的PDF文件 (2)在文档的现有单页上添加一些数据(例如时间戳) (3)写出文件 我似乎无法弄清楚如何使用iText做到这一点。用伪代码可以做到这一点: Document document = reader.read(input); document.add(new Paragraph(“my timestamp”)); writer.wr