webentwicklung-frage-antwort-db.com.de

Winkel 4 Http POST funktioniert nicht

Ich hoffe, es geht allen gut. Ich habe vor kurzem angefangen, mit dem Winkel 4.4 zu arbeiten. Ich habe versucht, Daten auf meinem API-Server zu veröffentlichen, aber leider funktioniert es nicht. Ich habe schon 2 Tage damit verbracht aber immer noch keinen Erfolg. Und habe schon 6-7 Artikel aus angle.io ausprobiert. Ich habe beide Http und Httpclient module Ausprobiert, aber nichts scheint zu funktionieren.

Das Problem ist, dass Angular bei jedem Versuch, Daten auf meinem Server zu veröffentlichen, die http OPTIONS - Typanforderung anstelle von POST vornimmt.

this.http.post('http://myapiserver.com', {email: '[email protected]'}).subscribe(
    res => {
        const response = res.text();
    }
);

Ich habe auch versucht, benutzerdefinierte Optionen mit der Anfrage zu senden, aber immer noch kein Erfolg.

const headers = new Headers({ 'Content-Type': 'x-www-form-urlencoded' });
const options = new RequestOptions({ headers: headers });
options.method = RequestMethod.Post;
options.body = {name: 'Adam Smith'};
//options.body = JSON.stringify({name: 'Adam Smith'}); // i also tried this
//options.body = 'param1=something&param2=somethingelse'; // i also tried this

Ich verwendete ASP.NET Core 2.0, aber da es nicht funktionierte, habe ich auch einfachen PHP-Code ausprobiert. Hier ist der serverseitige Code für PHP. Und es funktioniert auch nicht.

<?php
print_r($_POST);
?>

Hinweis: Cors ist auch auf dem Server aktiviert. Ich habe auch versucht, einfach zu bekommen und es funktioniert einwandfrei.

Ich werde mich wirklich über eine Hilfe freuen.

Danke im Voraus

4
Osama Sheikh

Ich habe es gelöst, indem ich den Content-Type auf application/x-www-form-urlencoded gesetzt habe:

  const headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
  const options = new RequestOptions({ headers: headers });
  const params = new URLSearchParams();
  params.append('mypostField', 'myFieldValue');
  http.post('myapiendpoint.com', params, options).subscribe();
5
Osama Sheikh

haben Sie versucht, Header als drittes Argument in der Post-Methode zu übergeben:

this.http.post('http://myapiserver.com', JSON.stringify({name: 'Adam Smith'}), { headers: new Headers({ 'Content-Type': 'application/json' }) }).subscribe(
    res => {
        const response = res.text();
    }
);

stellen Sie sicher, dass Sie Header von @ angle/http importieren

1
JayDeeEss

Ich hatte dasselbe Problem und ich habe es so benutzt (probiere es mit FormData). Es funktioniert für mich.

let formdata = new FormData();
formdata.append('email', '[email protected]');

this.http.post('http://myapiserver.com', formdata).subscribe(
    res => {
        const response = res.text();
    }
);
0
Reshan Pubudu