如何使用SAP ICF将数据分块发送到外部服务?

问题描述

我目前正在尝试通过NODEJS外部服务实现SAP Communication,其中SAP通过Internet Communication Framework(ICF)发送数据。

我已经能够以纯格式发送数据。但是,我有兴趣通过块发送它。 因此,我设置了这两个标头:

CALL METHOD server->response->set_header_field
  EXPORTING
    name  = 'Transfer-Encoding'
    value = 'chunked'.

CALL METHOD server->response->set_header_field
  EXPORTING
    name  = 'Content-Type'
    value = 'text/plain'.

然后按照Wikipedia所示设置响应数据: c_result ='4 \ r \ nWiki \ r \ n5 \ r \ npedia \ r \ nE \ r \ n in \ r \ n \ r \ nchunks。\ r \ n0 \ r \ n \ r \ n'。 服务器->响应-> set_cdata(c_result)。

但是,当我在GW Client中调用它时,出现错误:“ HTTP接收失败:与伙伴的连接断开”。

当我在NodeJS外部服务中调用它时,出现错误:

{ Error: Parse Error
    at Socket.socketOnData (_http_client.js:442:20)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:94:17) bytesParsed: 945,code: 'HPE_INVALID_CHUNK_SIZE' }

能否请您帮助我确定问题出在哪里? 我有一些嫌疑犯:

  1. SAP ICF都不支持块
  2. 我没有正确设置响应
  3. 在SAP响应处理中,将另外修改两个响应文本。 有经验的人可以帮助您吗?

解决方法

最后我意识到,ICF使用HTTP 1.0和chunks were added in HTTP 1.1 and retired in HTTP 2.0

请让我知道是否应该删除问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...