Skip to main content

Play! and Angular.js POST request Error!


* I tested with Curl command like this. curl --header "Content-type: application/json" --request POST --data '{"name": "Guillaume"}' http://localhost:8080/api/notification3 => request().body().asJson() can get the json request value
* I tried with seveal ways of ajax call in angular.js.
$http({ url: 'http://localhost:8080/api/notification3', method: "POST", dataType: "json", data: {"name": "Guillaume"}, headers: {'Content-Type': 'application/json'} }).success(function (data, status, headers, config) { debugger; console.log("good") }).error(function (data, status, headers, config) { debugger; console.log("something wrong") });
* and the request headers are like this.
Request URL:http://localhost:8080/api/notification3 Request Method:POST Status Code:200 OK Request Headersview source Accept:application/json, text/plain, */* Accept-Encoding:gzip,deflate,sdch Accept-Language:ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:no-cache Connection:keep-alive Content-Length:41 Content-Type:application/json Host:localhost:8080 Origin:http://127.0.0.1:9000 Pragma:no-cache Referer:http://127.0.0.1:9000/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36 Request Payloadview source {userId:1, title:1, createdAt:} createdAt: "" title: "1" userId: "1" Response Headersview source Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Auth-Token Access-Control-Allow-Methods:POST, GET, OPTIONS, PUT, DELETE Access-Control-Allow-Origin:* Access-Control-Max-Age:3600 Content-Length:0
* With Request Payloadview above, angular.js looks like send the data to server, but Play! can parsing the data in contrast to Curl command.
* I tried to debug with play! source. But I can't the point for parsing the values from http request.
* I tried to change the input format with JSON.stringify or something. but It doesn't work. so I guess the best way to check out the reason might be finding the point for parsing the values from http request with play! source.

* server-side source : // CREATE public static Result createNotification() { // String json = request().body().asText(); // System.out.println("json =" + json); // System.out.println("request().body().asFormUrlEncoded() =" + request().body().asFormUrlEncoded()); // String json = request().body().asJson().toString(); // Notification input = new Gson().fromJson(json, Notification.class); //input.save(); return ok(); } * routes : #POST /api/notification3 com.locket.notification.controllers.Notification3Ctl.createNotification() OPTIONS /api/notification3 com.locket.notification.controllers.Notification3Ctl.createNotification() * front-end source : var data = {"name": "Guillaume"}; $http({ url: 'http://localhost:8080/api/notification3', method: "POST", dataType: "json", data: data, headers: {'Content-Type': 'application/json'} }).success(function (data, status, headers, config) { debugger; console.log("good") }).error(function (data, status, headers, config) { debugger; console.log("something wrong") });




Comments

Popular posts from this blog

Amazon RDS Blue/Green Deployments

In order to avoid some errors I experienced when proceeding as described in the official documentation, I describe what I did in order. 1) Modify parameters of source_database * error: Blue Green Deployments requires cluster parameter group has binlog enabled. RDS Parameter groups: source-params-group binlog_format => MIXED mysql> show global variables like 'binlog_format'; 2) Insert a row after rebooting the source database, to avoid this error. * error: Correct the replication errors and then switch over. Read Replica Replication Error - IOError: 1236, reason: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' => To Fix: You need to change the data in the source database. INSERT INTO dummy_table ( `favorite_id` , `favorite_order` , `user_id` , `board_id` ) VALUES ('100001', '1', '11111', '11111'); 3) Modify the param...

Fluentd for mysql in AWS

(0) preparation ulimit -n If your console shows 1024, it is insufficient. Please add following lines to your /etc/security/limits.conf file and reboot your machine. root soft nofile 65536 root hard nofile 65536 (1) install Fluentd // “Ubuntu 12.04 LTS / Precise” curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh /etc/init.d/td-agent start/stop/restart/status // test curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test /etc/init.d/td-agent stop chown: changing ownership of `/var/run/td-agent/td-agent.pid': Operation not permitted chown: changing ownership of `/var/run/td-agent': Operation not permitted  * Stopping td-agent td-agent                                                                                   ...

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 75...