আমি কোনও application/x-www-form-urlencodedসামগ্রীর ধরণ হিসাবে আমার ডেটা প্রেরণ করে এমন কোনও এপিআইতে একটি পোষ্ট অনুরোধ করতে চাই । আমার অনুরোধ শিরোনামগুলি পরিচালনা করতে হবে এই কারণে, আমি http.NewRequest(method, urlStr string, body io.Reader)একটি অনুরোধ তৈরি করতে পদ্ধতিটি ব্যবহার করছি । এই পোস্টের অনুরোধের জন্য আমি আমার ডেটা ক্যোয়ারীটি ইউআরএলে সংযুক্ত করি এবং শরীরটি খালি রাখি, এরকম কিছু:
package main
import (
"bytes"
"fmt"
"net/http"
"net/url"
"strconv"
)
func main() {
apiUrl := "https://api.com"
resource := "/user/"
data := url.Values{}
data.Set("name", "foo")
data.Add("surname", "bar")
u, _ := url.ParseRequestURI(apiUrl)
u.Path = resource
u.RawQuery = data.Encode()
urlStr := fmt.Sprintf("%v", u) // "https://api.com/user/?name=foo&surname=bar"
client := &http.Client{}
r, _ := http.NewRequest("POST", urlStr, nil)
r.Header.Add("Authorization", "auth_token=\"XXXXXXX\"")
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
r.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
resp, _ := client.Do(r)
fmt.Println(resp.Status)
}
আমি প্রতিক্রিয়া হিসাবে, আমি সবসময় একটি পেতে 400 BAD REQUEST। আমি বিশ্বাস করি যে সমস্যাটি আমার অনুরোধের উপর নির্ভর করে এবং এপিআই বুঝতে পারে না আমি কোন পেওড পোস্ট করছি। আমি এই জাতীয় পদ্ধতি সম্পর্কে সচেতন, Request.ParseFormযদিও এই প্রসঙ্গে এটি কীভাবে ব্যবহার করা যায় তা নিশ্চিত নয়। আমি কি আরও কিছু শিরোনাম অনুভব করছি, প্যারামিটারটি application/jsonব্যবহার করে bodyপেডলোড প্রকার হিসাবে প্রেরণের আরও ভাল কোনও উপায় আছে কি?