将JSON数据从COBOL程序发送到KAFKA REST服务器

当我尝试从COBOL程序发送到KAFKA时,JSON数据中缺少“方括号”

我已经启动了KAFKA-REST服务器,并尝试在COBOL程序中格式化json数据,然后使用“ WEB SEND POST”发送数据。

注意:用于Web发送POST的媒体类型为:application/vnd.kafka.json.v1+json

我可以看到COBOL击中了我的KAFKa服务器,但在KAFKA服务器端出现以下错误:

 "POST /topics/test HTTP/1.1" 400 159  (io.confluent.restutils.requests:77)

试图从COBOL发送的数据:

{"records":[{"value":{"name":"vikash"}}]}

但是在COBOL端本身就删除了方括号,并且数据采用以下格式:

{"records": {"value":{"name":"vikash"}} }

请帮助!

下面是COBOL代码 '''enter image description here

media Type used

网络发送POST enter image description here

`EXEC CICS WEB SEND POST                     
  SESSTOKEN(WS-SESSION-TOKEN)            
  FROM(WS-TRY-DATA)                      
  FROMLENGTH(LENGTH OF WS-TRY-DATA)      
  MEDIATYPE(MEDIA-TYPE)                  
  PATH(WS-KAFKA-PATH)                    
  PATHLENGTH(LENGTH OF WS-KAFKA-PATH)    
  RESP(WS-RESP) RESP2(WS-RESP2)          
  NOHANDLE                               
 END-EXEC.   

working storage variable

   01 WS-TRY-DATA.                                                
   05 WS-FILLER1                 PIC X(01) VALUE "{".          
   05 WS-FILLER4                 PIC X(01) VALUE '"'.          
   05 WS-RECORD                  PIC X(09) VALUE 'records":'.  
   05 WS-LEFT-BRACE              PIC X(01) VALUE '['.          
   05 WS-FILLER2                 PIC X(01) VALUE "{".          
   05 WS-FILLER6                 PIC X(01) VALUE '"'.          
   05 WS-VALUE-LIT               PIC X(09) VALUE 'value":{"'.  
   05 WS-VALUE                   PIC X(07) VALUE 'name":"'.    
   05 WS-VALUE2                  PIC X(09) VALUE 'vikash"}}'.  
   05 WS-RIGHT-BRACE             PIC X(01) VALUE ']'.          
   05 WS-FILLER3                 PIC X(01) VALUE "}".          

media type

    01 MEDIA-TYPE                    PIC X(56)  VALUE 
         'application/vnd.kafka.json.v1+json'.    

web send post

hui3636 回答:将JSON数据从COBOL程序发送到KAFKA REST服务器

众所周知,方括号会在PC和主机之间引起问题。您要确保在大型机上,这些是左括号('[')和右括号(']')的EBCDIC字符x'BA'和x'BB'。当您使用键盘输入时,某些终端仿真器无法正确显示这些字符或未为其分配正确的EBCDIC字符。

例如,我将您的COBOL结构复制到一个程序中。当我在PC上的WS-LEFT-BRACE字段中键入[字符时,我没有得到x'BA'字符。而是显示为x'5F'。同样,WS-RIGHT-BRACE显示为x'A5'而不是x'BB'。

因此,要做的第一件事是检查COBOL结构中的实际十六进制值。

在将正确的值输入字段后,然后将WEB SEND用于与您相同的媒体类型。我的HTTP客户端收到了包括方括号在内的正确JSON输出。我确实明确编写了CHARACTERSET('iso-8859-1')代码,但是您不必为该操作数编写代码,因为它是默认操作。

如果您的COBOL结构中确实有正确的十六进制值,建议您与IBM一起打开问题单。 CICS不应从HTTP正文中删除方括号。

本文链接:https://www.f2er.com/3167414.html

大家都在问