在这件事上被难住了一段时间,把我剩下的头发都拔了出来。在
将非嵌套的protobuf从Python发送到Java,将Java发送到Python WebSockets的问题。我的问题是通过WebSocket发送嵌套版本。我想我的问题是 Python编码方面。在
感谢您的指导。在
.proto文件
message Response {
// Reflect back to caller
required string service_name = 1;
// Reflect back to caller
required string method_name = 2;
// Who is responding
required string client_id = 3;
// Status Code
required StatusCd status_cd = 4;
// RPC response proto
optional bytes response_proto = 5;
// Was callback invoked
optional bool callback = 6 [default = false];
// Error, if any
optional string error = 7;
//optional string response_desc = 6;
}
message HeartbeatResult {
required string service = 1;
required string timestamp = 2;
required float status_cd = 3;
required string status_summary = 4;
}
心跳信号结果应该在reponse_proto字段中发送 反应方案。我可以用Java-to-Java,但是Python 对Java无效。在
我已经包含了python代码的两个变体。这两种方法都不管用。在
^{pr2}$Java服务器端的错误包括:
(GetHeartbeat) Protocol message end-group tag did not match expected tag
and
(GetHeartbeat2)
Message: [org.java_websocket.exceptions.InvalidDataException: java.nio.charset.MalformedInputException: Input length = 1
at org.java_websocket.util.Charsetfunctions.stringUtf8(Charsetfunctions.java:80)
at org.java_websocket.WebSocketImpl.deliverMessage(WebSocketImpl.java:561)
at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:328)
at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:149)
at org.java_websocket.server.WebSocketServer$WebSocketWorker.run(WebSocketServer.java:593)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
at java.nio.charset.CoderResult.throwException(CoderResult.java:277)
at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:798)
at org.java_websocket.util.Charsetfunctions.stringUtf8(Charsetfunctions.java:77)
解决方案
也在protobuf组上发布了这个问题
感谢克里斯托弗·海德和伊利亚·米尔金为谷歌集团提供的信息
https://groups.google.com/forum/#!topic/protobuf/Cp7zWiWok9I
仅供参考,伊利亚还建议用base64编码整个消息,但目前看来这是可行的。在
相关问题 更多 >
编程相关推荐