Я реализовал функции, следующие за этим https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_http1_bridge_filter
Тело должно быть сериализованным телом grp c, которое:
public static byte[] serializeGRPCRequest(GeneratedMessageV3 message) {
byte[] bytes = message.toByteArray();
byte[] length = intToNetworkByteOrder(bytes.length);
byte[] data = new byte[bytes.length + 5];
data[0] = (byte) '\0';
System.arraycopy(length, 0, data, 1, length.length);
System.arraycopy(bytes, 0, data, 5, bytes.length);
return data;
}
public static byte[] intToNetworkByteOrder(int num) {
byte[] buf = new byte[4];
for (int i = 3; i >= 0; i--) {
buf[i] = (byte) (num & 0xff);
num >>>= 8;
}
return buf;
}
Оставьте это здесь для тех, кто ищет ту же проблему
Я просто попытался заставить это работать, так что если вы, ребята, найдете что-то плохое в моем код, пожалуйста, дайте мне знать:)