How to pass JSON String to Jersey Rest Web-Service with Post Request
Asked Answered
S

2

7

I want to create a REST Jersey Web-Service accepting JSON string as input parameter.

Also I will use post requestand from webmethod I will return one JSON string.

How can I consume this in a HTML page using Ajax post request. I want to know what all changes I need to make it on web method to accept JSON String.

 public class Hello {

      @POST
     public String sayPlainTextHello() {
      return "Hello Jersey";
      }
   }
Spiculum answered 31/1, 2013 at 9:36 Comment(0)
B
26

Need to break down your requests. First, you want to accept a JSON string. So on your method you need

@Consumes(MediaType.APPLICATION_JSON)

Next, you need to decide what you want your method to obtain. You can obtain a JSON string, as you suggest, in which case your method would look like this:

@Consumes(MediaType.APPLICATION_JSON)
public String sayPlainTextHello(final String input) {

Or alternatively if your JSON string maps to a Java object you could take the object directly:

@Consumes(MediaType.APPLICATION_JSON)
public String sayPlainTextHello(final MyObject input) {

You state that you want to return a JSON string. So you need:

@Produces(MediaType.APPLICATION_JSON)

And then you need to actually return a JSON string:

return "{\"result\": \"Hello world\"}";

So your full method looks something like this:

@PATH("/hello")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String sayPlainTextHello(final String input) {
  return "{\"result\": \"Hello world\"}";
}

Regarding using AJAX to send and receive, it would look something like this:

var myData="{\"name\": \"John\"}";
var request = $.ajax({
    url: "/hello",
    type: "post",
    data: myData
});

request.done(function (response, textStatus, jqXHR){
    console.log("Response from server: " + response);
});
Boatbill answered 31/1, 2013 at 10:11 Comment(3)
@jgm..can u pls tell how to pass value and consume it in html page using ajax request..Spiculum
Updated response to cover AJAXBoatbill
Did it work? If so please mark the response as answered, thank you.Boatbill
F
0

This will work. "path" is the relative URL path to be used in AJAX call.

public class Hello {

@POST
@Path("/path")
@Produces({ "text/html" })
 public String sayPlainTextHello() {
  return "Hello Jersey";
  }

}

Freeland answered 31/1, 2013 at 9:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.