Ini kode saya:
import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
logIn(username: string, password: string) {
const url = 'http://server.com/index.php';
const body = JSON.stringify({username: username,
password: password});
const headers = new HttpHeaders();
headers.set('Content-Type', 'application/json; charset=utf-8');
this.http.post(url, body, {headers: headers}).subscribe(
(data) => {
console.log(data);
},
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log('Client-side error occured.');
} else {
console.log('Server-side error occured.');
}
}
);
}
dan di sini debug jaringan:
Request Method:POST
Status Code:200 OK
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:46
Content-Type:text/plain
dan Data disimpan di 'Minta Payload' tetapi di server saya tidak menerima nilai POST:
print_r($_POST);
Array
(
)
Saya percaya kesalahan berasal dari header yang tidak disetel selama POST, apa yang saya lakukan salah?
angular
http-headers
angular-httpclient
Frennetix
sumber
sumber
Jawaban:
Contoh
HttpHeader
kelas baru adalah objek yang tidak dapat diubah . Menggunakan metode kelas akan menghasilkan instance baru sebagai hasilnya. Jadi pada dasarnya, Anda perlu melakukan hal berikut:atau
Perbarui: menambahkan beberapa header
atau
Pembaruan: terima peta objek untuk header & params HttpClient
Karena 5.0.0-beta.6 sekarang dimungkinkan untuk melewati pembuatan
HttpHeaders
objek dan langsung melewati peta objek sebagai argumen. Jadi sekarang mungkin untuk melakukan hal berikut:sumber
set
nama metode agak menyesatkan.HttpHeaders().set(..).set(..)
tetapi sekarang lagi header tidak ditulis ke bidang header HTTP ?!Untuk menambahkan beberapa params atau header Anda dapat melakukan hal berikut:
sumber
lazyUpdate
properti, tetapi pada akhirnya akan macet denganCreateListFromArrayLike
pengecualian ketika membuat permintaan efektif dengan berlangganan.atur header http seperti di bawah ini dalam permintaan http Anda
sumber
Saya berjuang dengan ini untuk waktu yang lama. Saya menggunakan Angular 6 dan saya menemukan itu
tidak bekerja. Tapi apa yang berhasil itu
lakukan, yang masuk akal ketika Anda menyadari bahwa mereka tidak dapat berubah. Jadi setelah membuat header Anda tidak dapat menambahkannya. Saya belum mencobanya, tapi saya curiga
akan bekerja juga.
sumber
let
dapat memperbaikinyaSaya bersama Angular 8 dan satu-satunya hal yang berhasil bagi saya adalah ini:
sumber
Dalam manual ( https://angular.io/guide/http ) saya membaca: Kelas HttpHeaders tidak dapat diubah, sehingga setiap set () mengembalikan instance baru dan menerapkan perubahan.
Kode berikut berfungsi untuk saya dengan angular-4:
sumber
Dalam aplikasi legasi saya, Array.f dari prototipe js, bertentangan dengan Array.from angular yang menyebabkan masalah ini. Saya mengatasinya dengan menyimpan versi Array.from dari angular dan menugaskannya kembali setelah memuat prototipe.
sumber
Contoh Angular 8 HttpClient Service dengan Penanganan Kesalahan dan Custom Header
Lihat contoh tutorial lengkap di sini
sumber