java - J2EE și servlet HTTP POST Angular
Am căutat mult pe Google și am încercat toate soluțiile alternative, care erau în mare parte pentru PHP, dar nu a funcționat. Încerc să trimit parametri POST către un servlet j2ee, dar parametrii nu sunt primiți la servlet, deși dacă trimit parametrii atașându-i la URL (GET), reușesc să primesc datele.
Iată codul.
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Http, Headers, RequestOptions } from '@angular/http';
import 'rxjs/Rx';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
userName: string;
password: string;
constructor(public navCtrl: NavController, public navParams: NavParams,
public http: Http) {
}
login() {
var headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let devicecode = '1-001-001-009-1';
let postParams = {
loginid: this.userName,
password: this.password,
devicecode: devicecode
}
this.http.post("http://localhost:8092/OCWebService/LoginOSO", postParams
, options)
.subscribe(data => {
console.log(data);
alert(data);
}, error => {
console.log(error);// Error getting the data
});
}
}
Iată codul Servlet:
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
response.setContentType("text/html;charset=UTF-8");
BufferedReader bf = request.getReader();
String userName = request.getParameter("loginid");
String password = request.getParameter("password");
String deviceCode = request.getParameter("devicecode");
}
Notă: Sunt nou în Ionic 2.
Răspuns #1
Parametrii (request.getParameter()) sunt doar pentru date application/x-www-form-urlencoded sau pentru parametrii din șirul de interogare. Trimiteți JSON.
Pentru a rezolva problema, poți fie să trimiți application/x-www-form-urlencoded, fie să extragi JSON-ul din fluxul de intrare al cererii și să îl parsezi singur. Va trebui să folosești o bibliotecă precum Jackson pentru aceasta. De exemplu
InputStream in = request.getInputStream();
MyPojo pojo = new ObjectMapper().readValue(in, MyPojo.class);
ObjectMapper este o clasă Jackson.
