Discussions
Categories
- 197K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.8K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 556 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.4K SQL Developer
- 296.3K Development
- 17 Developer Projects
- 139 Programming Languages
- 293K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 158 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 205 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 468 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
How to add a JSON object to the body of an HTTP POST request

Hello,
I am using Java 8 ME Embedded and I would like to add a Json object in the body of an http request.
I would like to do something like :
-----------------------------------------------------------------------------------------
HttpClientBuilder clientBuilder = HttpClientBuilder.getInstance();
HttpClient client = clientBuilder.build();
HttpRequestBuilder requestBuilder = client.build("my_URI");
requestBuilder.setHeader(HttpHeader.ACCEPT, "text/plain");
[...]
requestBuilder.setMethod(HttpMethod.POST);
HttpRequest request = requestBuilder.build();
//creating the Json object to be sent in the http request body
JsonObject myJsonObj= Json.createObjectBuilder()
.add("firstname", "John")
.add("lastname", "XXX")
.build();
//This part, I am a bit confused : how to get the OutputStream in which I should put the Json object?
JsonWriter jsonWriter = Json.createWriter(java.io.OutputStream out);
jsonWriter.writeObject(myJsonObj);
jsonWriter.close();
//invoking the http request
HttpResponse response = request.invoke();
-----------------------------------------------------------------------------------------
Do you have any tip, please ?
Thanks in advance.
Bruno
Best Answer
Answers
-
Hi Bruno,
please take a look at HttpRequestBuilder.setBody
/Sergey
-
Hi Sergey,
I did but I am still confused : I need a StreamedMessageBody interface. How do I get it?
Bruno -
-
Thanks a lot Sergey, once again !
What I did (for other people that might have the same need) :
----------------------------------------------------------------------------------------
Create the class implementing the StreamedMessageBody interface
----------------------------------------------------------------------------------------
public class MessageBody implements StreamedMessageBody {
@Override
public void write(HttpMessageHeaders headers, java.io.OutputStream bodyStream) {
System.out.println("in write method");
JsonObject jsonObject = Json.createObjectBuilder()
.add("firstname", "John")
.add("lastName", "Smith")
.build();
JsonWriter jsonWriter=Json.createWriter(bodyStream);
jsonWriter.writeObject(jsonObject);
jsonWriter.close();}
----------------------------------------------------------------------------------------
Then, in my main class :
----------------------------------------------------------------------------------------
private void sendJsonHttpRequest(){
// default client builder
HttpClientBuilder clientBuilder = HttpClientBuilder.getInstance();HttpClient client = clientBuilder.build();
HttpRequestBuilder requestBuilder = client.build("http://myURI");
requestBuilder.setHeader(HttpHeader.ACCEPT, "text/plain");
requestBuilder.setHeader(HttpHeader.CONTENT_TYPE, "application/json");requestBuilder.setMethod(HttpMethod.PUT);
//Get the StreamedMessageBody interface
StreamedMessageBody messageBody= new MessageBody();//Update the requestBuilder
requestBuilder.setBody(messageBody);// prepared client request is ready for execution
HttpRequest request = requestBuilder.build();System.out.println("URI=" + request.getURI());
HttpMessageHeaders httpMessageHeaders = request.getHeaders();
//Invoke the request
HttpResponse response = request.invoke();}