内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

主页 > CDN >

服务器_全球域名注册量查询_返利

2021-07-23 00:01 出处:欧普曼云计算 人气: 评论(0

简介

我最近有一个要求,将xml负载作为嵌入HTTP表单的csv文件提交给REST端点。基于供应商的文档,中国移动物联网,购物返现,我必须实现以下类似的目标:

这带来了一些问题,因为REST适配器的标准表单提交会用SAP生成的附件名称自动填充内容处置属性的名称和文件名属性。

下面我分享了我研究的可能解决方案从每一个获得的结果,这将有希望帮助您,如果面临类似的问题。

解决方案

经过研究,我发现了三种可能的方法解释如下,注意所有的屏幕截图都是基于NWDS 7.5和从我开发的概念证明:

由于SAP PO 7.50 SP07一个新的功能被添加到REST适配器,允许发送和接收MIME多部分消息(见SAP注释2365727)

勾选支持附件并将多部分内容类型设置为"多部分/表单数据"

因为输出的数据不是xml,并将数据格式设置为JSON

设置以下模块

StrictXml2PlainBean–用于将有效负载转换为csv

MessageTranformBean–用于将表单内容配置更改为所需的文件和文件名(PO最初将其设置为系统生成的有效负载名称)

FormDataBean–尽管在REST适配器上设置了"支持附件",但它没有以HTTP形式输出最终消息,什么是淘客,使用这个bean添加一个额外的表单内容解决了这个问题。

结果:虽然上面的方法有效,淘客采集软件,但是文件名不能动态设置

这在blog中有解释https://blogs.sap.com/2019/04/23/csv-multi-part-form-data-upload-as-attachment-using-

基本上,此方法使用自定义项创建新的基于原始有效负载的csv附件。可以使用从有效负载/ASMA读取的指定文件名添加附件。然后使用负载交换bean将消息负载与这个新附件交换。同样,对于REST适配器,应该设置支持附件和数据格式–JSON。

结果:虽然为我的特定场景实现了动态文件名,但表单名必须设置为"file"。我尝试添加MessageTransformBean并设置

但是删除了ContentDisposition的filename元素,因此不可行。

阅读完博客https://blogs.sap.com/2014/09/12/html-form-upload-using-http-plain-adapter-with-java-mapping/我决定尝试Java映射路径。

REST适配器数据格式再次设置为JSON(XML设置抱怨没有有效的XML)

"Support Attachments"未勾选

表单设置在HTTP Headers选项卡上,而不是

作为概念证明,创建了以下简化的JAVA映射

包com.mapping公司;

导入java.io.OutputStream输出流;

导入com.sap.aii公司.映射.api.AbstractTransformation;

进口com.sap.aii公司.mapping.api.StreamTransformationException异常;

导入com.sap.aii公司.映射.api.TransformationInput;

导入com.sap.aii公司.映射.api.TransformationOutput;

public class FormMapping扩展AbstractTransformation{

@Override

public void transform(final TransformationInput in,final TransformationOutput out)抛出StreamTransformationException{

final String LINE_FEED="\r\n";

String RESULT="";String boundary="–SAP\ e9943b97-7668-11ea-9604-000000 5B75E1\结束";String contentDisposition="内容处置:表单数据;名称=\"文件\";文件名=\"TestFile.txt文件\"";

String contentType="Content Type:text/plain";

String Content="5555 000012000,测试供应商,111020000000000";

try{

OutputStream OutputStream=out.getOutputPayload输出有效负载().getOutputStream();

结果=边界+换行符+内容配置+换行符+内容类型+换行符+换行符+内容+换行符+换行符+边界+"–"+线路馈电;outputstream.write文件(结果.getBytes());

}捕获(异常){

getTrace().addDebugMessage(异常.getMessage()+结果);

抛出新的StreamTransformationException(异常.toString()+RESULT);

}

}

}

RESULT:上面的代码允许我们设置内容配置的文件和文件名。这是成功的。注意,HTTP头和Java代码中设置的"boundary"必须匹配。不确定边界需要是动态的还是静态的?在我的最终代码中,我将边界设置为MessageID GUID,并从源有效负载创建csv内容。

结论

可能有其他方法来实现上述目标,但基于我尝试的三种方法,淘客推广,可以得出以下结论:

对于静态名称和文件名,则可以使用方法1对于静态名称和动态文件名,可以使用方法2对于动态名称和文件名,方法3是最佳解决方案

分享给小伙伴们:
本文标签: 服务器全球域名注册查询返利

相关文章

评论

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

签名: 验证码: 点击我更换图片

评论列表