machen habe ich einen Endpunkt REST durch ein App Frühlings-Boot-Java zur Verfügung gestellt, die ich mit einem einfachen Go (go1.8 darwin/amd64) Programm zu schlagen versuchen. Ich habe versucht, es in zwei getrennten Wegen zu treffen:403 Forbidden wenn Golang POST
const (
LOCAL_BASE = "http://localhost:11400"
ADD_FUNDS_ENDPOINT = "/sub-accounts/%d/add-funds"
)
type InputArgumentsJson struct {
Amount float64 `json:"amount"`
BufferAmount float64 `json:"bufferAmount"`
FromSubAccountID int `json:"fromSubAccountId"`
}
...
// set up json body
inputArguments := &InputArgumentsJson{Amount: 1100, BufferAmount: 0,
FromSubAccountID: spendFundId}
bytes := new(bytes.Buffer)
json.NewEncoder(bytes).Encode(inputArguments)
// set up the url to call
endpoint := fmt.Sprintf(ADD_FUNDS_ENDPOINT, billSetAsideId)
url := LOCAL_BASE + endpoint
client := &http.Client{}
req, err := http.NewRequest("POST", url, bytes)
if err != nil {
fmt.Println("ERROR WHILE BUILDING REQUEST")
fmt.Println(err)
}
req.Header.Add("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
fmt.Println("ERROR WHILE MAKING REQUEST")
fmt.Println(err)
}
fmt.Println(resp)
und:
resp, err := http.Post(url, "application/json; charset=utf-8", bytes)
if err != nil {
fmt.Println("ERROR WHILE MAKING REQUEST")
fmt.Println(err)
}
fmt.Println(resp)
ich einen Ausdruck sehen hinzugefügt, wenn die URL und JSON Körper richtig waren und sie zu sein schien:
fmt.Printf("\nMaking request to %s with:\n %s\n", url, bytes)
out
gedrucktMaking request to http://localhost:11400/sub-accounts/167/add-funds with:
{"amount":1100,"bufferAmount":0,"fromSubAccountId":166}
, aber ich bekomme eine Verbotene, wenn ich es benutze.
kann ich diesen Endpunkt treffen, ohne beide Postman mit fehlschlagen und die folgende Curl-Befehl:
curl -H "Content-Type: application/json" -X POST -d '{"amount":1100,"bufferAmount":0,"fromSubAccountId":166}' http://localhost:11400/sub-accounts/167/add-funds
Hat jemand irgendwelche Gedanken auf, was ich hier fehlt möglicherweise? Um der Intrige noch etwas hinzuzufügen, kann ich erfolgreich einen anderen GET-Endpunkt aus dem Go-Programm treffen.
Vielen Dank im Voraus!
Edited zu zeigen, dass ich die URL und JSON Körper, um die Fehler und die umgebende Logik war ansteckend für die Erstellung von
Versuchen Sie zuerst Ihre Fehler zu fangen, 'bzw., err: = client.Do (erf)', sowohl auf Ihre Anfrage und Antwort. – Elad
Ich fange sie tatsächlich so und habe dann 'if err! = Nil' um es auszudrucken, aber nichts wird gefangen. Ich habe das der Kürze halber weggelassen, weil der Server eindeutig antwortet, aber mit einem 403. –