Rumah > Java > javaTutorial > teks badan

Mengapa Saya Tidak Dapat Menetapkan Pengepala Menggunakan Kaedah setRequestProperty() HttpURLConnection?

Barbara Streisand
Lepaskan: 2024-11-09 09:24:02
asal
401 orang telah melayarinya

Why Am I Unable to Set Headers Using HttpURLConnection's setRequestProperty() Method?

Cara Menambah Pengepala pada Permintaan HttpURLConnection

Apabila bekerja dengan permintaan HTTP, menambah pengepala tersuai adalah penting untuk mengesahkan permintaan, menghantar data tambahan, dan mengawal tingkah laku pelayan. Walau bagaimanapun, pengguna telah menghadapi masalah dengan kaedah setRequestProperty() dalam HttpURLConnection, mempersoalkan keberkesanannya. Artikel ini menyelidiki isu ini dan menyediakan penyelesaian.

Kod yang diberikan menunjukkan percubaan untuk menambah pengepala Kebenaran pada permintaan HTTP menggunakan setRequestProperty(). Walau bagaimanapun, pelayan dilaporkan tidak menerima pengepala.

Untuk menangani perkara ini, adalah penting untuk menyemak sama ada pengepala dihantar dengan betul. Satu isu yang mungkin ialah badan permintaan telah ditulis sebelum pengepala ditetapkan. Dalam kes sedemikian, pengepala mungkin tidak disertakan dalam permintaan. Untuk menyelesaikan masalah ini, pengepala hendaklah ditetapkan sebelum sebarang output ditulis.

Sebagai alternatif, pendekatan berbeza boleh digunakan untuk menambah pengepala, seperti yang ditunjukkan dalam penyelesaian yang disediakan:

URL myURL = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();

String userCredentials = "username:password";
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));

myURLConnection.setRequestProperty ("Authorization", basicAuth);
myURLConnection.setRequestMethod("POST");
myURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
myURLConnection.setRequestProperty("Content-Length", "" + postData.getBytes().length);
myURLConnection.setRequestProperty("Content-Language", "en-US");
myURLConnection.setUseCaches(false);
myURLConnection.setDoInput(true);
myURLConnection.setDoOutput(true);
Salin selepas log masuk

Ini kod mengkonfigurasi permintaan POST dan secara manual menetapkan pengepala Kebenaran dengan sintaks yang betul menggunakan pengekodan Base64. Dengan menetapkan pengepala secara eksplisit, ia memastikan bahawa ia disertakan dalam permintaan. Selain itu, pengepala Panjang Kandungan juga ditetapkan, yang penting untuk permintaan POST dengan badan.

Dengan melaksanakan penyelesaian ini, pengguna boleh menambah pengepala tersuai dengan berkesan pada permintaan HttpURLConnection mereka, mendayakan pengesahan dan kawalan permintaan yang betul.

Atas ialah kandungan terperinci Mengapa Saya Tidak Dapat Menetapkan Pengepala Menggunakan Kaedah setRequestProperty() HttpURLConnection?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan