Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghantar Permintaan POST Berkod URL dengan Betul menggunakan http.NewRequest()?

Bagaimana untuk Menghantar Permintaan POST Berkod URL dengan Betul menggunakan http.NewRequest()?

Mary-Kate Olsen
Lepaskan: 2024-12-24 11:35:17
asal
697 orang telah melayarinya

How to Properly Send a URL-Encoded POST Request using http.NewRequest()?

Buat Permintaan POST berkod URL dengan http.NewRequest(...)

Dalam konteks ini, anda berhasrat untuk menghantar POST permintaan melalui API yang dipratentukan dengan muatan yang diformatkan sebagai kandungan aplikasi/x-www-form-urlencoded. Daripada bergantung pada kaedah seperti Request.ParseForm, mari kita mendalami pendekatan pilihan menggunakan http.NewRequest(...).

Untuk mengurus pengepala permintaan dengan cekap, anda memilih http.NewRequest(method, urlStr string , body io.Reader) untuk membuat permintaan anda. Walaupun strategi ini secara amnya baik, pengawasan utama terletak pada pengendalian muatan. Mengikut spesifikasi HTTP, muatan berkod URL hendaklah disediakan melalui parameter badan, tidak dilampirkan terus pada URL.

Oleh itu, untuk membetulkan isu ini, anda harus mengubah suai kod anda untuk memasukkan muatan berkod URL anda di bahagian badan. Berikut ialah contoh:

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "strings"
)

func main() {
    apiUrl := "https://api.com"
    resource := "/user/"
    data := url.Values{}
    data.Set("name", "foo")
    data.Set("surname", "bar")

    u, _ := url.ParseRequestURI(apiUrl)
    u.Path = resource
    urlStr := u.String() // "https://api.com/user/"

    client := &http.Client{}
    r, _ := http.NewRequest(http.MethodPost, urlStr, strings.NewReader(data.Encode())) // URL-encoded payload
    r.Header.Add("Authorization", "auth_token=\"XXXXXXX\"")
    r.Header.Add("Content-Type", "application/x-www-form-urlencoded")

    resp, _ := client.Do(r)
    fmt.Println(resp.Status)
}
Salin selepas log masuk

Dengan pengubahsuaian ini, kod anda kini sepatutnya menghantar muatan berkod URL dengan betul dalam badan seperti yang diperlukan oleh API. Oleh itu, anda harus mengharapkan respons yang berjaya, seperti yang ditunjukkan oleh respons.Status 200 OK.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Permintaan POST Berkod URL dengan Betul menggunakan http.NewRequest()?. 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