当前位置: 首页 > 知识库问答 >
问题:

我可以在GoLang post请求中发布json格式的数据吗[duplicate]

路伟
2023-03-14

所以我有一个php页面,我试图让我的GoLang客户端通过POST请求进行通信。php脚本通过key:value进行输入,key:value是message:hello world,希望添加多个键。它适用于我的python脚本,但不适用于golang,所以这里是我到目前为止在golang中的内容。

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
)

func main() {
    resp, err := http.Post("http://127.0.0.1/project/devapi.php",
        url.Values{"message": {"Client has been connected"}})

    if err != nil {
        // handle error
    }

    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        // handle error
    }

    fmt.Println(string(body))

}

尝试运行上述代码时收到的错误消息:

# command-line-arguments
Programs\Client\client.go:11:24: not enough arguments in call to http.Post
        have (string, url.Values)
        want (string, string, io.Reader)

php脚本是:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    echo $_POST['message'];
}
?>

我能得到的最佳回复如下:

URL:> http://127.0.0.1/project/devapi.php
response Status: 200 OK
response Headers: map[Content-Length:[954] Content-Type:[text/html; charset=UTF-8] Date:[Mon, 09 Aug 2021 05:46:54 GMT] Server:[Apache/2.4.46 (Win64) PHP/7.3.21] X-Powered-By:[PHP/7.3.21]]
response Body: <br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: message in C:\wamp64\www\project\devapi.php on line <i>3</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0006</td><td bgcolor='#eeeeec' align='right'>405536</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp64\www\project\devapi.php' bgcolor='#eeeeec'>...\devapi.php<b>:</b>0</td></tr>
</table></font>

共有1个答案

赫连秦迟
2023-03-14

正是我要找的

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "log"
    "net/http"
)

func main() {

    values := map[string]string{"name": "John Doe", "occupation": "gardener"}
    json_data, err := json.Marshal(values)

    if err != nil {
        log.Fatal(err)
    }

    resp, err := http.Post("https://httpbin.org/post", "application/json",
        bytes.NewBuffer(json_data))

    if err != nil {
        log.Fatal(err)
    }

    var res map[string]interface{}

    json.NewDecoder(resp.Body).Decode(&res)

    fmt.Println(res["json"])
}
 类似资料:
  • 问题内容: 我有这个控制器方法: 但是,当我向该端点发送发布请求时,得到以下信息 当我从注释中删除params参数时,我得到了一个更一般的错误,它将说它找不到第一个必需的参数(开始),而实际上它与参数end,hours和username一起发送。 如何在Spring MVC中获取方法中的参数? 我在这篇文章中读到了只能用于get方法的内容,但是如果我删除并坚持使用批注的params参数,它仍然无法

  • 问题内容: 我已经在R中编写了以下代码以开始使用数据请求API。这是一个普通的Web服务JSON API。 基本上,它使用httr初始化了URL的获取请求,然后通过fromJSON将生成的JSON数据转换为R结构。JSON请求如下所示: 确实,我的代码像我希望的那样将数据放入了data.frame中,但是它非常冗长,我拒绝相信所有这些行对于实现所需结果都是必需的。所需的结果是mydf data.f

  • 问题内容: 我已经在互联网上进行了一些研究,但没有设法获得有关该主题的完整图片。任何人都可以暂时解决这个问题吗? 这是我到目前为止发现的: 可以使用jsonp进行跨域调用。禁止在jsonp调用中更改标头 如果服务器允许,则可以使用json进行跨域调用。 这就是我想要做的: 这是正在发生的事情: 当myJSonServer在同一域上时,完全没有问题 当myJSonServer在另一个域上时,将发送请

  • 我在网上做了一些研究,但我没有设法得到关于这个主题的完整画面。有人能帮助解决这个问题吗? 这是我目前发现的: 可以使用jsonp进行跨域调用。在jsonp调用中不允许更改头 如果服务器允许,可以使用json进行跨域调用。 这就是我想做的: 这就是正在发生的事情: 当myJSonServer在同一个域上时,完全没有问题 当myJSonServer在另一个域上时,请求被发送,但是没有承载头 这个承载头

  • 我正在尝试在Spring Boot中使用WebClient制作API POST Request。但是我无法使用JSON正文发出我想要的请求并以JSONObject的形式接收响应。 JSON正文: 服务类别- 工作区模型- 主通话- 我需要发送一个JSON主体列表,作为主体post请求。请帮我做帖子请求提前谢谢

  • 问题内容: data = { ‘ids’: [12, 3, 4, 5, 6 , …] } urllib2.urlopen("http://abc.com/api/posts/create”,urllib.urlencode(data)) 我想发送POST请求,但是其中一个字段应该是数字列表。我怎样才能做到这一点 ?(JSON?) 问题答案: 如果您的服务器期望POST请求为json,则您需要添加标