- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序通过 protobuf 从服务器向客户端发送数据。当我在客户端反序列化发送的有效负载时,eclipse 会抛出以下类型的期望:
Exception in thread "main" com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.
当我调用“parseFrom()”时出现预期。我知道在大多数情况下,错误在于语法错误的 protobuf 文件。因此,我希望在这里发布 protobuf 定义就足够了:
package protobuf;
option java_package = "com.carproject.abs.demo.protobuf";
option java_outer_classname = "DesktopDevice_getCarsResponse";
message CARS {
required int64 carid = 1;
required string carname = 2;
message Carinformation {
required string street = 1;
required string postalcode = 2;
required string city = 3;
required string country = 4;
required string cartimezoneid = 5;
}
message Right {
optional string name = 1;
optional int32 type = 2;
optional int32 service = 3;
}
message PropertyType {
optional string name = 1;
optional string value = 2;
}
repeated Carinformation carinformation = 3;
repeated Right carrights = 4;
repeated PropertyType carproperties = 5;
repeated string inoid = 6;
}
下面的代码显示了如何在服务器端写入数据:
// carObj returns the necessary Strings
CAR carObj = car.getCAR();
Builder newBuilder = DesktopDevice_getCarResponse.CAR.newBuilder();
newBuilder.setCarid( carObj.getCARID() );
newBuilder.setCarname( carObj.getCARNAME());
// hardcoded values here
newBuilder.getCarinformationBuilder(1).setStreet( carObj.getCARNFORMATION().getSTREET() );
newBuilder.getCarinformationBuilder(1).setPostalcode( carObj.getCARINFORMATION().getPOSTALCODE() );
newBuilder.getCarinformationBuilder(1).setCity( carObj.getCARINFORMATION().getCITY() );
newBuilder.getCarinformationBuilder(1).setCountry( fleetObj.getCARINFORMATION().getCOUNTRY() );
newBuilder.getCarinformationBuilder(1).setCartimezoneid( fleetObj.getCARINFORMATION().getCARTIMEZONEID() );
byte[] responsePayload = newBuilder.build().toByteArray();
RestServerResponseMessage responseMsg = new RestServerResponseMessage( requestMsg.getRequestId(), responsePayload, "XML");
return responseMsg;
如你所见,Server使用protobuf提供的Builder模式来设置必要的字符串。然后将数据序列化为 byte[] 并通过 protobuf 发送回客户端。
这是我尝试解析数据的客户端代码。
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
CAR car = DesktopDevice_getCarsResponse.CARS.parseFrom(instream);
}
调用 .parseFrom 时抛出异常。服务器代码和 carObj 工作正常。我已经在我的程序中成功发送了 protobuf 数据。
最佳答案
在服务器上使用 Base64.getEncoder.encode(protoMsg.toByteArray)
。并使用 Base64.getDecoder.decode(receivedArray[Bytes])
。在线上发送的数据应始终进行编码和解码
关于buffer - 协议(protocol)消息标记的线路类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12895864/
在典型的 TSP 算法中,我们有多个点,我们希望以最优的行进顺序行进。点是家庭、客户等,基本上是 map 上的一个点。 我有线来优化,而不是点。扫雪机就是一个很好的例子,您可以在多条街道上行驶。最大的
对于我的计算机视觉类(class),我将做一个项目,我将根据走廊的图像提取关于走廊的信息。特别是,向消失点延伸的走廊线会很有趣。我的问题是我是否应该使用 Matlab、OpenCV 或其他东西来实现这
是否有任何工具可以查看 HTTP 2.0 的传输情况(原始请求和响应)?我使用 Fiddler,只看到 HTTP 1.1 数据。 我在 Chrome 中启用了 HTTP 2.0/SPDY 并访问了 h
我们想对我们办公室的两条 ADSL 线路进行负载平衡。 我对 is 的经验有限,想知道是否有人可以为我提供理论之外的解决方案,换句话说,关于硬件和软件要求和建议的细节。 所以我们有 2 条 4mb A
Warning: Error in parsing value for 'display'. Declaration dropped. Line: 0 我不确定当我留下这个警告时会发生什么,因为我没有
我想知道这条 SDP 线的含义是什么,因为我正试图在 5% 到 10% 的数据包丢失情况下获得最平滑的帧速率。 我不知道的行是:a=rtcp-fb:100 goog-remba=rtcp-fb:100
出于某种原因,我在我的所有 CSS 文件中都收到了这个警告/错误,但我不太明白。当我通过 W3C Validator 运行我的 CSS 时结果 100% 有效且格式正确等。但是,在 Firefox 中
我是一名优秀的程序员,十分优秀!