如何强制Angular2使用x-www-form-urlencoded进行POST请求
如何强制Angular2使用x-www-form-urlencoded进行POST请求
我有一个项目需要使用Angular2(final)向一个旧的、遗留的Tomcat 7服务器发送请求,该服务器提供一个类似REST的API,使用.jsp页面。
当项目只是一个简单的JQuery应用程序执行AJAX请求时,这个工作很好。然而,项目的范围已经扩大,需要使用一个更现代的框架进行重写。Angular2看起来非常适合这个任务,除了一个例外:它拒绝使用除了表单数据以外的选项来执行POST请求,而API并不提取这种数据。API希望所有的数据都是urlencoded的,并依赖于Java的request.getParameter("param")
语法来提取单个字段。
这是我user.service.ts的一个片段:
import { Injectable } from '@angular/core'; import { Headers, Response, Http, RequestOptions } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; @Injectable() export class UserService { private loggedIn = false; private loginUrl = 'http://localhost:8080/mpadmin/api/login.jsp'; private headers = new Headers({'Content-Type': 'application/x-www-form-urlencoded'}); constructor(private http: Http) {} login(username, password) { return this.http.post(this.loginUrl, {'username': username, 'password': password}, this.headers) .map((response: Response) => { let user = response.json(); if (user) { localStorage.setItem('currentUser', JSON.stringify(user)); } } ); } }
无论我将内容类型设置为什么,它总是以未编码的表单数据形式到达。它没有遵守我设置的头信息。
有人遇到过这个问题吗?你如何强制Angular2以一个可以被一个旧的Java API使用request.getParameter("param")
读取的格式发送POST数据?