Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

555
Views
Angular2 - Parámetros de solicitud HTTP POST

Estoy tratando de hacer una solicitud POST pero no puedo hacer que funcione:

 testRequest() { var body = 'username=myusername?password=mypassword'; var headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded'); this.http .post('/api', body, { headers: headers }) .subscribe(data => { alert('ok'); }, error => { console.log(JSON.stringify(error.json())); }); }

Básicamente, quiero replicar esta solicitud http (no ajax) como si fuera originada por un formulario html:

URL: /api

Parámetros: usuario y contraseña

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Actualización para Angular 4.3+

Ahora podemos usar HttpClient en lugar de Http

la guia esta aqui

Código de muestra

 const myheader = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded') let body = new HttpParams(); body = body.set('username', USERNAME); body = body.set('password', PASSWORD); http .post('/api', body, { headers: myheader), }) .subscribe();

Obsoleto

O puedes hacer así:

 let urlSearchParams = new URLSearchParams(); urlSearchParams.append('username', username); urlSearchParams.append('password', password); let body = urlSearchParams.toString()

Actualización oct/2017

Desde angular4+ , no necesitamos headers ni .toString() . En su lugar, puede hacer lo siguiente ejemplo

 import { URLSearchParams } from '@angular/http';

Método POST/PUT

 let urlSearchParams = new URLSearchParams(); urlSearchParams.append('username', username); urlSearchParams.append('password', password); this.http.post('/api', urlSearchParams).subscribe( data => { alert('ok'); }, error => { console.log(JSON.stringify(error.json())); } )

Método OBTENER/ELIMINAR

 let urlSearchParams = new URLSearchParams(); urlSearchParams.append('username', username); urlSearchParams.append('password', password); this.http.get('/api', { search: urlSearchParams }).subscribe( data => { alert('ok'); }, error => { console.log(JSON.stringify(error.json())); } )

Para application/json

 this.http.post('/api', JSON.stringify({ username: username, password: password, })).subscribe( data => { alert('ok'); }, error => { console.log(JSON.stringify(error.json())); } )
over 4 years ago · Santiago Trujillo Report

0

Creo que el cuerpo no es correcto para un tipo de contenido application/x-www-form-urlencoded . Podrías intentar usar esto:

 var body = 'username=myusername&password=mypassword';

Espero que te ayude Thierry

over 4 years ago · Santiago Trujillo Report

0

En versiones posteriores de Angular2, no es necesario configurar manualmente el encabezado Content-Type y codificar el cuerpo si pasa un objeto del tipo correcto como body .

Simplemente puedes hacer esto

 import { URLSearchParams } from "@angular/http" testRequest() { let data = new URLSearchParams(); data.append('username', username); data.append('password', password); this.http .post('/api', data) .subscribe(data => { alert('ok'); }, error => { console.log(error.json()); }); }

De esta manera, angular codificará el cuerpo por usted y establecerá el encabezado Content-Type correcto.

PD: no olvides importar URLSearchParams desde @angular/http o no funcionará.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!