SAP ABAP 企业微信服务端 API > 消息推送 > 发送应用消息 > 文件消息:上传临时素材中文名称乱码 [ 未解决,待更新 ]

SAP ABAP 企业微信服务端 API > 消息推送 > 发送应用消息 > 文件消息:上传临时素材中文名称乱码 [ 未解决,待更新 ]

简介: 企业微信上传临时素材中文名称乱码,ABAP 实现问题未解决,用 JAVA 等语言的实现应该没问题。这篇文章是我的一些开发记录,谨以此留待同道中人继续研究。

关键字:SAP ABAP 企业微信 服务端 API 上传文件 中文名称乱码 消息推送


1 企微服务端 API

API 按调用次序:

2 中文名称乱码

不影响打开,但影响实际应用!
在这里插入图片描述

3 基于 ABAP 实现的问题分析

  • 官方请求示例
POST https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=accesstoken001&type=file HTTP/1.1
Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468
Content-Length: 220
---------------------------acebdf13572468
Content-Disposition: form-data; name="media";filename="wework.txt"; filelength=6
Content-Type: application/octet-stream
mytext
---------------------------acebdf13572468--
  • ABAP 请求示例(原始请求)
  lv_name = lv_filename.
  lv_value = 'form-data; name="media"; filename="' && lv_name && '"'.
  call method lo_part->set_header_field
    exporting
      name  = 'content-disposition'
      value = lv_value.
  • ABAP 请求示例(按最可能正确的方向改进)
    尝试字符集编码识别,结果失败。
  lv_name = lv_filename.
  lv_name = escape( val = lv_name format = cl_abap_format=>e_uri_full ).
  lv_value = `form-data; name="media"; filename*=UTF-8''` && lv_name.
  call method lo_part->set_header_field
    exporting
      name  = 'Content-Disposition'
      value = lv_value.

尝试使用IF_HTTP_UTILITY~CONTENT_DISPOSITION_FILENAME,无效,且 SAP Support 有好几个需要实施的 Note 如 2260256,果弃。
[ filename*=UTF-8'' && lv_name ] 这类处理其实依赖服务端是否支持解析。

4 Postman 测试用例和请求内容跟踪

Postman 测试结果正常,中文名称 OK !

5 一些解决过程的参考文章

6 在 JAVA 中是怎么解决的?

  • 使用 MultipartEntityBuilder 类上传
    在这里插入图片描述
         //解决企业微信中文乱码问题,设置编码格式
       MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
       builder.addBinaryBody("media", file, ContentType.DEFAULT_BINARY, encodedFilename);
       HttpEntity reqEntity = builder.build();
       // 定义数据分隔线
       httpPost.setEntity(reqEntity);
       httpResponse = httpPost.execute(httpMethod);
  • 在 ABAP 中如何实现下图的 JAVA ?特别是enc:"UTF-8"
    在这里插入图片描述

7 一些没什么用的记录

8 在企微开发者社区提 Case

企微开发者社区 > 服务端API发送文件消息文件中文名乱码?
右侧还很多同质问题,
在这里插入图片描述
在这里插入图片描述

9 总结

  • 我真诚的建议:转向 JAVA 平台发布 API 服务跳板。
  • 在 ABAP 中实现 JAVA 功能(详见第 6 节)。
  • 企微应该不支持解析,无论是对 filename 的 header field 再指定,还是字符集转换。
  • 企业微信的技术支持实在是太烂了!找不到一个人工客服,只能以 Case 方式提问,完全没效率,遇到问题你甚至会生出变更合作伙伴,弃暗投明的想法。
  • 这个问题把我整挺崩溃,如果你在 ABAP 中解决了这个问题,一定要在留言回复我来围观!提前感谢你。

对酒当歌,人生几何!譬如朝露,去日苦多。


其他

我的微信群、QQ群和其他发布平台。

长期提供开发和运维服务。

猜你喜欢

转载自blog.csdn.net/libin961797440/article/details/132053900