Благодарим вас за то, что я потратил 2 дня на это. Вот работающая команда curl.GOLANG - exec.Command Эквивалентные переменные с полезной нагрузкой JSON
curl -ku login:pass -X POST -H 'Content-Type: application/json'-d'{"type":"page","title":"Testpage","space":{"key":"ITDept"},"body":{"storage":{"value":"<p>Blank Page.</p>","representation":"storage"}}}' https://confluence/rest/api/content
Мне нужно, чтобы это выполнило с exec.Command.
Учитывая, что сейчас в Go я попытался убежать и всевозможные другие способы заставить это работать. Проблема более чем вероятно, эта смешная строка JSON, которая требуется. У меня есть строка JSON, сохраненная в var, чтобы попробовать это.
jsonPayload := '{"type":"page","title":"Testpage","space":{"key":"ITDept"},"body":{"storage":{"value":"<p>Blank Page.</p>","representation":"storage"}}}'
execCmd := "bash", "-c", "curl -ku login:pass -X POST -H 'Content-Type: application/json' -d" jsonPayload "https://confluence/rest/api/content"
Таким образом, jsonPayload является аргументом в -d. Я пробовал это, используя маршал json/encoding и net/http-пакет, и он проходит, но что-то о том, как это отправляет stdlib, заставляет API заявить, что это неправильный формат.
Я также пробовал это с этим, и завиток, скопированный из println, но когда на самом деле бежал в golang, он терпел неудачу с неправильным форматом.
env := os.Environ()
curlCmd, err := exec.LookPath("curl")
if err != nil {
fmt.Println("Path not found to binary!")
panic(err)
}
args := []string{"curl", "-ku", "login:pass", "-X", "POST", "-H", "'Content-Type: application/json'", "-d", payloadJson, "https://confluence/rest/api/content"}
execErr := syscall.Exec(curlcmd, args, env)
if execErr != nil {
panic(execErr)
}
fmt.Println(curlCmd)
Когда curlCmd от этой последней строки выводит его можно скопировать и вставить в терминал, и он работает, однако при прохождении через golang он приходит с форматом не поддерживается. Любая помощь будет принята с благодарностью.
Я дам ему выстрелили и доложить. – RedBloodMage
Нечетный, поэтому ему нужны обратные ", но они не появляются в завитке, когда я fmt.Println (cmd). Таким образом, завиток выглядит так. curl -ku login: pass -X POST -H 'Content-Type: application/json'-d {"type": "page", "title": "Testpage", "space": {"key": "ITDept "}," body ": {" storage ": {" value ":"
Пустая страница.
"," представление ":" storage "}}} https: // confluence/rest/api/content, и для этого требуется backticks вокруг полезной нагрузки. Знаете ли вы, как я могу получить те, которые появляются, как в полезной нагрузке, которую вы имеете выше, имеют '' вокруг внешнего {} полезной нагрузки var. По какой-то причине их снимают. – RedBloodMageBackticks ограничивают [raw string literal] (https://golang.org/ref/spec#String_literals). Как и во всех строковых литералах, разделители не являются частью строки. –