从cobol程序向kafka rest服务器发送json数据

ecfdbz9o  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(563)

当我试图从cobol程序发送到kafka时,json数据中缺少了“方括号”
我已经启动了kafkarest服务器,尝试在cobol程序中格式化json数据,并使用“websendpost”发送数据。
注意:用于web发送帖子的媒体类型为: 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代码,请在此处输入图像描述
使用的媒体类型
在此处输入图片描述

`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.

工作存储变量

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 "}".

媒体类型

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

web发送邮件

cunj1qz1

cunj1qz11#

方括号会导致pc和大型机之间的问题。您要确保在大型机上,这些是ebcdic字符x'ba'和x'bb'作为左括号('[')和右括号(']')。当您使用键盘输入时,某些终端仿真器不能正确显示这些字符,或者不能为它们分配正确的ebcdic字符。
例如,我将上面的cobol结构复制到一个程序中。当我在ws-left brace字段中输入pc中的[字符]时,我没有得到x'ba'字符。相反,它显示为x'5f'。同样,ws-right大括号显示为x'a5'而不是x'bb'。
因此,首先要检查cobol结构中的实际十六进制值。
在将正确的值输入该字段后,我使用了与您相同的媒体类型的websend。我的http客户机收到了正确的json输出,包括方括号。我确实显式地对characterset('iso-8859-1')进行了编码,但您不必对该操作数进行编码,因为它是默认值。
如果您的cobol结构中有正确的十六进制值,我建议您打开ibm的问题单。cics不应该从http正文中去掉方括号。

相关问题