从客户端向服务器发送数据 - REST Web服务

问题描述 投票:0回答:1

我正在使用RESTful Web服务开发客户端 - 服务器应用程序。

我想在客户端上询问用户输入并将其发送到服务器并在我的程序的其余部分中使用该名称,但我无法正确地将名称发送到服务器。

以下是我的计划的一部分:

客户:

func main() {
       //getting input
        fmt.Println("Please enter your name: ")
        reader := bufio.NewReader(os.Stdin)
        myName, _ := reader.ReadString('\n')

        client := &http.Client{
            CheckRedirect: nil,
        }
        reply, err := http.NewRequest("GET", "http://localhost:8080/", nil)
        reply.Header.Add("username", myName)
        client.Do(reply)
        if err != nil {
            fmt.Println(err)
        }

服务器:

func CreateClient(w http.ResponseWriter, r *http.Request) {

    clientName := r.Header.Get("username")
    fmt.Println(clientName, "---------")//it's empty
    cli := &Client{
        currentRoom:   nil, //starts as nil because the user is not initally in a room
        outputChannel: make(chan string),
        name:          clientName,
    }
    Members = append(Members, cli)

    reply := cli.name

    fmt.Fprintf(w, reply)
}

在客户端,回复(reply.Header.Add("username", myName))在标题中有用户名,但在服务器端clientName(clientName := r.Header.Get("username"))为空,所以我的程序的其余部分将不会运行。

我的问题是我无法将用户输入发送到服务器并在客户端将其取回。

有人能告诉我如何解决问题吗?

rest go restful-url
1个回答
0
投票

你可能想看看http query stringWikipedia

发送用户名。

req := http.NewRequest("GET","localhost:8080",nil)
q:=req.URL.Query()
q.Add("username",myName)
req.URL.RawQuery = q.Encode()
Resp,err:=http. Client{}.Do(req)

收到用户名:

clientName := r.URL.Query()["username"][0]

请注意,如果您要对密码或任何其他敏感数据执行相同操作,请对如何确保其安全进行一些研究,不要复制此代码。

© www.soinside.com 2019 - 2024. All rights reserved.