节点请求输出与 curl 输出不同
Node request output differing from curl output
我可以使用 curl 发出请求,获取响应并将其解析为 protobuf。但是,在尝试对节点的 request
执行相同操作时,我无法将 body
参数解析为 protobuf,即使我已将其转换为缓冲区。
这是请求应该输出的十六进制转储
00000000: 1088 8080 80f0 fca4 f02c a206 00a2 0600 .........,......
00000010: a206 5408 a7b5 a9a4 e22a 10ff 8ac8 b9e3 ..T......*......
00000020: 2a1a 121a 100a 0e09 2130 0000 0000 0000 *.......!0......
00000030: 107b 18d4 011a 121a 100a 0e09 2130 0000 .{..........!0..
00000040: 0000 0000 107b 18d4 011a 121a 100a 0e09 .....{..........
00000050: 2130 0000 0000 0000 107b 18d4 011a 081a !0.......{......
00000060: 0612 0408 0110 15a2 0600 a206 00 .............
这就是将创建的缓冲区转储到磁盘并使用 xxd
将其转储为十六进制的方法
00000000: 10ef bfbd efbf bdef bfbd efbf bdef bfbd ................
00000010: efbf bdef bfbd efbf bd2c efbf bd06 00ef .........,......
00000020: bfbd 0600 efbf bd06 5408 efbf bdef bfbd ........T.......
00000030: efbf bdef bfbd efbf bd2a 10ef bfbd efbf .........*......
00000040: bdef bfbd efbf bdef bfbd 2a1a 121a 100a ..........*.....
00000050: 0e09 2130 0000 0000 0000 107b 18ef bfbd ..!0.......{....
00000060: 011a 121a 100a 0e09 2130 0000 0000 0000 ........!0......
00000070: 107b 18ef bfbd 011a 121a 100a 0e09 2130 .{............!0
00000080: 0000 0000 0000 107b 18ef bfbd 011a 081a .......{........
00000090: 0612 0408 0110 15ef bfbd 0600 efbf bd06 ................
由于时间戳的变化(我的服务器在 protobuf 中将其发回),可能会有细微差别,但是这两个文件应该都是可解析的。
好的,所以 request
假定您的响应是一个 unicode 字符串,去除非 unicode 字符并对其进行破坏,除非您将 encoding: null
添加到 requestSettings
。
将上述参数添加到设置中可以修复它。
我可以使用 curl 发出请求,获取响应并将其解析为 protobuf。但是,在尝试对节点的 request
执行相同操作时,我无法将 body
参数解析为 protobuf,即使我已将其转换为缓冲区。
这是请求应该输出的十六进制转储
00000000: 1088 8080 80f0 fca4 f02c a206 00a2 0600 .........,......
00000010: a206 5408 a7b5 a9a4 e22a 10ff 8ac8 b9e3 ..T......*......
00000020: 2a1a 121a 100a 0e09 2130 0000 0000 0000 *.......!0......
00000030: 107b 18d4 011a 121a 100a 0e09 2130 0000 .{..........!0..
00000040: 0000 0000 107b 18d4 011a 121a 100a 0e09 .....{..........
00000050: 2130 0000 0000 0000 107b 18d4 011a 081a !0.......{......
00000060: 0612 0408 0110 15a2 0600 a206 00 .............
这就是将创建的缓冲区转储到磁盘并使用 xxd
将其转储为十六进制的方法
00000000: 10ef bfbd efbf bdef bfbd efbf bdef bfbd ................
00000010: efbf bdef bfbd efbf bd2c efbf bd06 00ef .........,......
00000020: bfbd 0600 efbf bd06 5408 efbf bdef bfbd ........T.......
00000030: efbf bdef bfbd efbf bd2a 10ef bfbd efbf .........*......
00000040: bdef bfbd efbf bdef bfbd 2a1a 121a 100a ..........*.....
00000050: 0e09 2130 0000 0000 0000 107b 18ef bfbd ..!0.......{....
00000060: 011a 121a 100a 0e09 2130 0000 0000 0000 ........!0......
00000070: 107b 18ef bfbd 011a 121a 100a 0e09 2130 .{............!0
00000080: 0000 0000 0000 107b 18ef bfbd 011a 081a .......{........
00000090: 0612 0408 0110 15ef bfbd 0600 efbf bd06 ................
由于时间戳的变化(我的服务器在 protobuf 中将其发回),可能会有细微差别,但是这两个文件应该都是可解析的。
好的,所以 request
假定您的响应是一个 unicode 字符串,去除非 unicode 字符并对其进行破坏,除非您将 encoding: null
添加到 requestSettings
。
将上述参数添加到设置中可以修复它。