Я застрял на очень-очень простой проблеме: используя HttpRequest
до POST
крошечный бит JSON для сервера, использующего Netty.
Как только канал подключен, я готовлю запроскак это:
HttpRequest request = new DefaultHttpRequest(
HttpVersion.HTTP_1_1, HttpMethod.POST, postPath);
request.setHeader(HttpHeaders.Names.CONTENT_TYPE, "application/json");
String json = "{\"foo\":\"bar\"}";
ChannelBuffer buffer = ChannelBuffers.copiedBuffer(json, CharsetUtil.UTF_8);
request.setContent(buffer);
channel.write(request);
System.out.println("sending on channel: " + json);
Последняя строка выводит {"foo":"bar"}
, который является правильно сформированным JSON.
Однако, действительно простой эхо-сервер, который я написал на Python с использованием Flask, показывает запрос, но у него нет поля body
или json
, как если бы тело не могло быть правильно проанализировано в JSON.
Когда я просто использую curl
для отправки тех же данных, тогда эхо-сервер делаетнайти и проанализировать JSON правильно:
curl --header "Content-Type: application/json" -d '{"foo":"bar"}' -X POST http://localhost:5000/post_path
Мой конвейер в Netty формируется с помощью:
return Channels.pipeline(
new HttpClientCodec(),
new MyUpstreamHandler(...));
Где MyUpstreamHandler
расширяет SimpleChannelUpstreamHandler
и является тем, что пытается отправить HttpRequest
после подключения канала.
Опять я в полной растерянности.Любая помощь будет принята с благодарностью.