I am stuck in one issue,i am writing stand alone API to send the request using Http2 protocol,but i want to send the json string using post method, i dont see any API to set the json to string to request object.
Please help on this issue.
public static void main(String args[]) throws Exception{
int port = 443;
//client init
HTTP2Client client = new HTTP2Client();
SslContextFactory sslContextFactory = new SslContextFactory(true);
client.addBean(sslContextFactory);
client.start();
//connect init
FuturePromise<Session> sessionPromise = new FuturePromise<>();
client.connect(sslContextFactory, new InetSocketAddress(host, port), new ServerSessionListener.Adapter(), sessionPromise);
Session session = sessionPromise.get(10, TimeUnit.SECONDS);
//headers init
HttpFields requestFields = new HttpFields();
requestFields.put("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION);
final Phaser phaser = new Phaser(2);
//multiple request in one connection
for(int i=0;i<120;i++)
{
System.out.println("Count..........."+i);
MetaData.Request metaData = new MetaData.Request("GET", new HttpURI("https://" + host + ":" + port + "/"), HttpVersion.HTTP_1_1, requestFields);
//PriorityFrame testPriorityFrame = new PriorityFrame(i, 100+i, 4, true);
// HeadersFrame headersFrame = new HeadersFrame(0, metaData, null, true);
HeadersFrame headersFrame = new HeadersFrame(metaData, null, false);
//listen header/data/push frame
session.newStream(headersFrame, new Promise.Adapter<Stream>(),
new Stream.Listener.Adapter() {
@Override
public void onHeaders(Stream stream, HeadersFrame frame) {
HttpFields fields=frame.getMetaData().getFields();
System.out.println("name ..."+fields.get("User-Agent"));
System.out.println("MetaData..."
+ frame.getMetaData());
System.err.println(frame + "headId:"
+ frame.getStreamId());
if (frame.isEndStream())
phaser.arrive();
}
@Override
public void onData(Stream stream, DataFrame frame,
Callback callback) {
System.out.println("Data..."+ frame.getData().toString());
/* ByteBuffer b=frame.getData();
b.rewind();
while (b.hasRemaining()){
System.out.println(b.position() + " -> " + b.get());
}
*/
byte[] bytes = new byte[frame.getData().remaining()];
frame.getData().get(bytes);
System.out.println("[" + stream.getId() + "] DATA " + new String(bytes));
count=count+1;
System.out.println("............ COUN"+count);
System.err.println(frame + "streamid:"
+ frame.getStreamId());
callback.succeeded();
if (frame.isEndStream())
phaser.arrive();
}
@Override
public Stream.Listener onPush(Stream stream,
PushPromiseFrame frame) {
System.err.println(frame + "pushid:"
+ frame.getStreamId());
phaser.register();
return this;
}
});
}
phaser.awaitAdvanceInterruptibly(phaser.arrive(), 5, TimeUnit.SECONDS);
Thread.sleep(600000);
client.stop();
}