Search code examples
javajetty

Jetty 9 - How do I set "request content" and "request headers" using Jetty 9?


I used ContentExchange class of Jetty 7 for setting URL, headers and requestContent.

Following is What I have using Jetty 7.

    HttpClient client = new HttpClient();
    client.start();
    ContentExchange exchange = new ContentExchange();
    exchange.setURL(url);
    exchange.setRequestHeader("Content-Type", "application/xml");
    exchange.setRequestHeader("Authorization", "Basic " + this.getAuthenticatonString());
    exchange.setMethod("POST");

    final AbstractBuffer cb = new ByteArrayBuffer(xml.getBytes("UTF-8"));
    exchange.setRequestContent(cb);

    client.send(exchange);
    exchange.waitForDone();


Jetty 9 doesn't have ContentExchange class but after some research I have this

HttpClient client = new HttpClient();
client
.POST(url)
.send()


I think I can use client.param for setting request headers but I am not really sure about it.

So my question is how do I set "request content" and "request headers" using Jetty 9?


Solution

  • import org.eclipse.jetty.client.HttpClient;
    import org.eclipse.jetty.client.Request;
    import org.eclipse.jetty.client.ContentResponse;
    import org.eclipse.jetty.http.HttpMethod;
    import org.eclipse.jetty.http.HttpHeader;
    ...
    HttpClient client = new HttpClient();
    client.start();
    Request req = client.newRequest("http://....");
    req.method(HttpMethod.GET);
    req.agent("Mozilla/5.0...");
    req.header(HttpHeader.ACCEPT, "text/html");
    req.header(HtppHeader.CONNECTION, "Keep-Alive");
    ContentResponse resp = req.send():
    ...
    client.stop();