spring - Angular4 doesn't send post data -
angular httpclient doesnt send data controller. error 500 (because username in controller null) when try execute fun().
test.sevice.ts
import { injectable } '@angular/core'; import {httpclient} "@angular/common/http";  import 'rxjs/rx'; import { observable } 'rxjs/rx';  @injectable() export class restservice {  private endpointurl = 'http://127.0.0.1:8080/api/test';  constructor(public http: httpclient){}  fun(){    this.test().subscribe((data)=>console.log(data));   }  test(): observable<string>{    let params = new urlsearchparams();    params.append("grant_type",'password');    params.append('username', 'name');     let body = params.tostring();     let headers = new httpheaders();    headers.set('content-type', 'application/x-www-form-urlencoded');     return this.http.post<string>(this.endpointurl,  body);   } } package.json
 ... "dependencies": { "@angular/common": "4.3.4", "@angular/compiler": "4.3.4", "@angular/compiler-cli": "4.3.4", "@angular/core": "4.3.4", "@angular/forms": "4.3.4", "@angular/http": "4.3.4", "@angular/common/http": "4.3.4", "@angular/platform-browser": "4.3.4", "@angular/platform-browser-dynamic": "4.3.4", ...}, spring mvc controller:
@requestmapping(value="/test",                  method = requestmethod.post,                 produces=mediatype.application_json_value) public string[] test(httpservletrequest request){     map<string, string[]> parameters = request.getparametermap();     return parameters.get("username"); } request postman works, , returns username.
does know i'm doing wrong?
what can see you're using httpclient not correctly ... cause came in angular 4.3.* , little bit different old http ..
you don't have anymore .json() ..so example:
    return this.http.post<string>(this.endpointurl,  body) //<-- don't need headers f.. itknows it's application/x-www-form-urlencoded        .map((resp) => {     return resp;  //<-- here resp resp.json()     })        .catch((err)=>{ console.log(err); }); } and post:
                let dataform = new urlsearchparams();                   dataform.append('username', "myusername");                  let body = dataform.tostring();     return this.http.post<string>(this.endpointurl,  body) //<-- don't need headers f.. itknows it's application/x-www-form-urlencoded            .map((resp) => {         return resp;  //<-- here resp resp.json()         })            .catch((err)=>{     console.log(err);     }); } 
Comments
Post a Comment