java - How To Receive JSON Data In Cross Origin Resource Sharing (CORS) with Spring REST -
i trying send / receive json data from / to controller class in project.
the controller class of project follows :
@requestmapping(value = "/dummy/",method = requestmethod.post,headers="accept=application/json") public response getdummyjson() { /* method 2: getting dummy json data file , sending json object */ jsonparser parser = new jsonparser(); jsonobject jsonobject = null; try { object obj = parser.parse(new filereader("d:\\jsonstruc.json")); jsonobject = (jsonobject) obj; } catch (exception e) { system.out.println("error parsing: - "); } return response.status(200).entity(jsonobject).build(); } @requestmapping(value = "/insert/dummy/",method= requestmethod.post,headers="accept=application/json") public response setdummyjson(@requestbody jsonobject inputjsonobj){ /*step 1: display json data sent angularjs */ system.out.println("data received:"+ inputjsonobj.tostring()); jsonparser jsonparser = new jsonparser(); containerfactory containerfactory = new containerfactory(){ public list creatarraycontainer() { return new linkedlist(); } public map createobjectcontainer() { return new linkedhashmap(); } }; map obj = (map)inputjsonobj; iterator iter = obj.entryset().iterator(); while(iter.hasnext()){ map.entry entry = (map.entry)iter.next(); system.out.println(entry.getkey() + "=>" + entry.getvalue()); } /* step 2: send next dummy json file */ jsonparser parser = new jsonparser(); jsonobject jsonobject1 = null; try { object obj1 = parser.parse(new filereader("d:\\jsonstruc1.json")); jsonobject1 = (jsonobject) obj1; } catch (exception e) { system.out.println("error parsing: - "); } return response.status(200).entity(jsonobject1).build(); }
the cors class of project follows :
public class corsfilter extends onceperrequestfilter{ private properties prop = new properties(); @override protected void dofilterinternal(httpservletrequest request, httpservletresponse response, filterchain filterchain) throws servletexception, ioexception { system.out.println("inside cross origin resource sharing filter class"); system.out.println(request.getcontenttype()); system.out.println(request.getcontentlength()); response.setheader("access-control-allow-origin", "*"); response.setheader("access-control-allow-methods", "post, get, options, delete, head, put"); response.setheader("access-control-max-age", "3600"); response.setheader("access-control-allow-credentials", "true"); response.setheader("access-control-allow-headers", "x-requested-with"); filterchain.dofilter(request, response); } }
there no problem regarding sending dummy json data through url (/service/question/dummy/) when trying json data (/service/question/insert/dummy/) , send next json object through method setdummyjson(....) having trouble. angularjs (client) side showing following exception message :
cross-origin request blocked: same origin policy disallows reading remote resource @ /fetchquestions/service/question/insert/dummy/. can fixed moving resource same domain or enabling cors.
on invoking url (/service/question/insert/dummy/) localhost json string content body following error message thrown :
the server refused request because request entity in format not supported requested resource requested method ().
what doing wrong ? appreciated. thanks.
there nothing wrong above code.
for reason whenever content-type set application/json in angularjs(client side) using following command :
$httpprovider.defaults.headers.post['content-type'] = 'application/json';
the server side received content-type of null. other content-type application/x-www-form-urlencoded or text/plain works problem occurs application/json (even though angularjs sending json data server side).
thus little change in controller class fixed problem.
@requestmapping(value = "/insert/dummy/",method= requestmethod.post") public response setdummyjson(@requestbody string inputjsonobj){ /* step1: receive data in text/plain format step2: conver string json object. necessary processing. step3: return dummy json object through response. */ return response.status(200).entity(jsonobject1).build(); }
Comments
Post a Comment