为什么这个curl命令不起作用?

嗨,我只是想创建一个简单的golang应用程序,它使用以下命令在identi.ca上发布新的凹痕

curl -u username:password http://example.com/api/statuses/update.xml -d status='Howdy!' -d lat='30.468' -d long='-94.743'

到目前为止,这是我的代码,恕我直言,这应该起作用,但实际上它不起作用,有人知道如何解决此问题吗?

不:我没有收到任何错误消息:/

package main

import(

"fmt"

"os"

"bufio"

"exec"

)

func main() {

var err os.Error

var username string

print("Username: ")

_, err = fmt.Scanln(&username)

if err != nil {

fmt.Println("Error: ", err)

}

var password string

print("Password: ")

_, err = fmt.Scanln(&password)

if err != nil {

fmt.Println("Error: ", err)

}

var status string

print("Status: ")

in := bufio.NewReader(os.Stdin);

status, err = in.ReadString('\n');

if err != nil {

fmt.Println("Error: ", err)

}

exec.Command("curl -u " + username + ":" + password + "https://identi.ca/api/statuses/update.xml -d status='" + status + "'" + "-d source='API'").Run()

回答:

exec.Command()不会将整个命令行作为单个参数。您需要将其称为:

exec.Command("curl", "-u", username+":"+password, ...url..., "-d", "status="+status, "-d", "source=API").Run()

您怎么知道是否遇到错误?您无需检查的返回值Run()

您实际上应该将命令创建与运行分开。这样,您可以将进程的stdout和stderr设置为以外的其他值/dev/null,例如

c := exec.Command("curl", "-u", username+":"+password, "https://identi.ca/api/statuses/update.xml", "-d", "status="+status, "-d", "source=API")

c.Stdout = os.Stdout

c.Stderr = os.Stderr

err = c.Run()

if err != nil {

fmt.Println("Error: ", err)

}

以上是 为什么这个curl命令不起作用? 的全部内容, 来源链接: utcz.com/qa/421679.html

回到顶部