طلب POST مع حمولة مشفرة بعنوان URL
عند إنشاء طلب POST باستخدام بيانات مشفرة بعنوان URL، من الشائع مواجهة 400 BAD طلب استجابة، يشير إلى أن الخادم لا يمكنه فهم الحمولة. تنشأ هذه المشكلة عادةً عندما يتم تقديم الحمولة بشكل غير صحيح.
تتوقع طريقة http.NewRequest(...) الخاصة بالمكتبة القياسية تقديم الحمولة كوسيطة ثالثة، والتي يجب أن تنفذ واجهة io.Reader. في حالة الحمولة المرمزة بعنوان URL، فهذا يعني أنها يجب أن تكون سلسلة من أزواج المفتاح والقيمة المشفرة.
مثال للتعليمات البرمجية:
لإرسال عنوان URL مشفر بشكل صحيح البيانات كطلب POST باستخدام http.NewRequest(...)، خذ بعين الاعتبار المثال التالي:
package main import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" ) func main() { apiUrl := "https://api.com" resource := "/user/" data := url.Values{} data.Set("name", "foo") data.Add("surname", "bar") u, _ := url.ParseRequestURI(apiUrl resource) client := &http.Client{} r, _ := http.NewRequest(http.MethodPost, u.String(), strings.NewReader(data.Encode())) 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) bodyBytes, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(bodyBytes)) }
في هذا المثال، يتم توفير الحمولة المشفرة بعنوان URL إلى وظيفة strings.NewReader، التي تنفذ io.Reader. ثم يتم إنشاء الطلب وإرساله بشكل صحيح.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3