Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 将JSON数据从COBOL程序发送到KAFKA rest服务器_Apache Kafka_Cobol_Kafka Rest - Fatal编程技术网

Apache kafka 将JSON数据从COBOL程序发送到KAFKA rest服务器

Apache kafka 将JSON数据从COBOL程序发送到KAFKA rest服务器,apache-kafka,cobol,kafka-rest,Apache Kafka,Cobol,Kafka Rest,当我试图从COBOL程序发送到KAFKA时,JSON数据中缺少了“方括号” 我已经启动了KAFKA-REST服务器,并尝试在COBOL程序中格式化json数据,并使用“WEB SEND POST”发送数据 注意:用于web发送帖子的媒体类型为:application/vnd.kafka.json.v1+json 我可以看到COBOL攻击我的KAFKa服务器,但在KAFKa服务器端出现以下错误: "POST /topics/test HTTP/1.1" 400 159 (i

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

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

注意:用于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代码 '''

网上发帖


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

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

因此,首先要做的是检查COBOL结构中的实际十六进制值

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


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

您可以共享您的COBOL代码吗?否则很难排除故障。可能是代码页问题涉及到哪些代码页。您可以获得字符串的十六进制转储吗?@RobinMoffatt感谢您的回复,我也添加了cobol代码。请看一看。@JamesAnderson嗨,James,感谢您的回复,应该提供什么代码页,请帮助我。我也添加了代码供您参考。Leigh的回答适用于默认cobol代码页EBCDIC 1140。如果使用EBCDIC 1047,这是一个另一个常用的EBCDIC代码页和USS中的默认代码页,左括号和右括号是EBCDIC字符x'AD'和x'BD'。确切地说——我指的是代码页037,它是美国MVS文件中使用的默认EBCDIC代码页。1047是Unix文件系统的默认代码页。我根据COBOL代码第在最初的海报上,他使用传统的MVS分区数据集作为源代码。感谢您指出“这取决于”这是答案的一部分。还有一件事,一般来说,JSON生成为UTF-8,因为JSON作为一种格式本身说应该是编码。用户可以自由地将其转换为EBCDIC以便于使用/查看,如果在EBCDIC平台上传输JSON的EBCDIC版本,则可能会出现上述转换问题。然而,可能是这样的最好将JSON保存在UTF-8中,并四处传输。
`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'.