当前位置: 首页 > 面试题库 >

Golang net / http请求正文始终为空

岑和风
2023-03-14
问题内容

我正在尝试将JSON参数发送到我的服务器,并使用json.Decoder解析它们。我读到您应该能够从request.Body属性获取查询参数。以下是我的服务器代码:

func stepHandler(res http.ResponseWriter, req *http.Request) {
    var v interface{}
    err := json.NewDecoder(req.Body).Decode(&v)
    if err != nil {
       // handle error
    }
    log.Println(v)
}

每次,我都会看到2014/12/26 22:49:23 <nil>(当然是不同的时间戳记)。我的客户端AJAX调用如下:

$.ajax({
  url: "/step",
  method: "get",
  data: {
    steps: $("#step-size").val(),
    direction: $("#step-forward").prop("checked") ? 1 : -1,
    cells: JSON.stringify(painted)
  },
  success: function (data) {
    painted = data;
    redraw();
  },
  error: function (xhr) {
    console.log(xhr);
  }
});

发送内容的示例URL:

http://localhost:5000/?steps=1&direction=1&cells=%5B%7B%22row%22%3A11%2C%22column%22%3A15%7D%2C%7B%22row%22%3A12%2C%22column%22%3A15%7D%5D

更好看一下参数:

{
  steps: "1",
  direction: "1",
  cells: "[{"row":11,"column":15},{"row":12,"column":15}]"
}

我已经尝试了GET和POST请求。

为什么我的req.Body从不解码?如果我尝试单独打印req.Body,我也会看到nil。


问题答案:

req.Body确实是空的-因此,我将其称为“调用”
req.ParseForm(),然后req.Form改为使用。Body不会获得绝对不在请求正文中的内容(例如查询参数)。



 类似资料:
  • 问题内容: 我正在为我们的应用程序开发新的RESTful Web服务。 在某些实体上执行GET时,客户端可以请求实体的内容。如果他们想添加一些参数(例如,对列表进行排序),则可以在查询字符串中添加这些参数。 另外,我希望人们能够在请求正文中指定这些参数。 HTTP / 1.1似乎并未明确禁止这样做。这将使他们能够指定更多信息,可能使指定复杂的XML请求更加容易。 我的问题: 这是个好主意吗? HT

  • 我需要计算我的原始HTTP post请求的散列,并将其与Java中相同的头中的签名散列进行比较。问题是,我尝试了多种方法,但无法提取发送的准确POST请求。随函附上请求: 我需要完全相同的字符串(连同所有的%和其他符号),因为即使是一个单独的空格差会生成一个不正确的散列。我们可以在这里使用自定义过滤器吗?如果可以,那么具体如何使用?

  • 问题内容: 我正在处理HTTP流量数据集,该数据集由完整的POST和GET请求组成,如下所示。我已经用Java编写了代码,该代码已经分离了每个请求,并将其另存为数组列表中的字符串元素。 现在我很困惑如何在Java中解析这些原始HTTP请求,有什么方法比手动解析更好吗? 问题答案: 我[正在]处理[HTTP]流量数据集,该数据集由完整的POST和GET请求组成 因此,您想解析包含多个HTTP请求的文

  • 我正在研究HTTP流量数据集,它由完整的POST和GET请求组成,如下所示。我用java编写了代码,将每个请求分开,并将其保存为数组列表中的字符串元素。现在我很困惑如何在java中解析这些原始HTTP请求,有什么方法比手动解析更好吗?

  • 问题内容: 通过某些错误消息中止我的 API 服务的方式是什么? 链接致电我的服务: 要给我的服务打电话,客户需要发送一个Json和一些参数。 我想测试我获得的参数是否正确,否则,我想发送一条错误消息。 响应应为Json代码 我尝试过,他们停止了服务,而不仅仅是通话请求。中止通话,但阻止我发送这是我的错误消息。 我读了一些有关 恐慌,推迟,恢复的信息, 但我真的不知道如何使用它们来解决此问题。 作

  • 调用我的服务的链接: 要调用我的服务,客户机需要发送一个Json和一些params。 我想测试我得到的参数是否正确,如果不正确,我想发送一条错误消息。 我尝试了和,它们停止服务,而不仅仅是调用请求。中止调用,但它阻止我发送,这是我的错误消息。 我读过一些关于恐慌、延迟、恢复的东西,但我真的不知道如何使用它们来解决这个问题。 工作: 但我只能在main函数中使用它,因为在其他函数中,它只退出func