2017-07-19 78 views
0

我想發佈一個簡單的HTTP請求,但是後端不能接收放慢參數angular2 HTTP POST請求不能接收參數

export class AppComponent { 
    isMenuCollapsed$:Observable<boolean>; 

    constructor(private store:Store<reducers.State>,private http:Http) { 

    this.isMenuCollapsed$ = this.store.select(reducers.getIsCollapsed); 
    let body: URLSearchParams = new URLSearchParams(); 

    body.set('username', 'admin'); 
    body.set('password', 'admin'); 
    let head = new Headers({ 
     'Content-Type': 'application/json' 
    }); 
    http.post('api/user/auth',body).subscribe(v => console.log(v)); 
    } 
} 

這是我的後端代碼:

@RestController 
@RequestMapping("/user") 
public class TestController { 

    @GetMapping("/get") 
    public String test(){ 
     return "hello"; 
    } 

    @PostMapping("/auth") 
    public String auth(HttpServletRequest request){ 
     return "username:" + request.getParameter("username") + 
       "|password:" + request.getParameter("password"); 
    } 
} 

當我使用常規的避孕方法,它的工作:

enter image description here

但是當我使用安固lar http,返回null enter image description here

所以我希望有人能幫助我,謝謝!!!

+0

我不認爲你的代碼是正確的,因爲在POST方法,你都應該被保存被包裹在一個響應您的身體數據模型的持久性。這也意味着在你的文章中你應該創建一個持久化對象。 –

+0

非常感謝,我只是發佈一個對象,並在後端代碼中添加@RequestBody註釋。 。它工作!^_^ –

+0

你可以選擇我的答案,併爲我們度過愉快的一天嗎? :) –

回答

0

我想代替OG getParameters你應該使用的東西得到的請求主體。創建簡單的用戶名和密碼對象,如

let body={username:"admin", password:"admin"} 

在傳遞請求之前將其正文字符串化。

this.http.post(...., Json.stringify(body)) 
+0

非常感謝,我只是發佈一個對象,並在後端代碼中添加@RequestBody註釋。 。它工作!^_ ^ –

0

你需要做的後端和前端職位的對象