私widgets.proto:私のprotobufをシリアル化してみませんか?
option java_package = "example";
option java_outer_classname = "WidgetsProtoc";
message Widget {
required string name = 1;
required int32 id = 2;
}
message WidgetList {
repeated Widget widget = 1;
}
私の残りの部分:(パス:/ウィジェット)
@GET
@Produces("application/x-protobuf")
public WidgetsProtoc.WidgetList getAllWidgets() {
Widget widget1 =
Widget.newBuilder().setId(1).setName("testing").build();
Widget widget2 =
Widget.newBuilder().setId(100).setName("widget 2").build();
System.err.println("widgets1: " + widget1);
System.err.println("widgets2: " + widget2);
WidgetsProtoc.WidgetList list = WidgetsProtoc.WidgetList.newBuilder().addWidget(widget1).addWidget(widget2).build();
System.err.println("list: " + list.toByteArray());
return list;
}
と私は郵便配達を使用するときに私は、この応答を得る:
(emptyline)
(emptyline)
testing
(emptyline)
widget 2d
これは正常です?私はバイト配列を送信するためにその良いと思った...しかし、何をシリアル化しないことを少し奇妙です
@Override
public void writeTo(WidgetsProtoc.WidgetList widgetList, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {
entityStream.write(widgetList.toByteArray());
}
...:私は...私のmessagebodywriterクラスで私はこのようなのwriteTo上書き本当にないと思います。私だけのIDです...助けてくれてありがとう:
あなたはこのMEDIATYPEが正しいですか?代わりに@Produces( "application/octet-stream")を行うとどうなりますか? – hakamairi
オクテットストリームに書き込むと同じです – seherez
フレームワークを使用していますか?何がWidgetsProtoc.WidgetListのシリアル化の世話をしていますか? – hakamairi