【问题标题】:POST: sending a post request in a url itselfPOST:在 url 本身中发送 post 请求
【发布时间】:2013-04-20 05:44:13
【问题描述】:

我获得了一个网址 ..www.abc.com/details,并要求我使用 POST 在此网址上发送我的姓名和电话号码。他们告诉我将内容类型设置为 application/json 并将正文设置为具有以下键的有效 JSON:

name: name of the user
phone number: phone number of the user

现在我不知道如何发送这个请求!会不会是这样的:

http://www.abc.com/details?method=post&name=john&phonenumber=445566

还是我必须使用java 发送相同的?

请帮忙

【问题讨论】:

  • 你必须从哪里发送这个请求?一个应用程序,一个网页?用什么语言?
  • 您尝试实现哪种编程?
  • 这就是重点......他们刚刚告诉我,如果服务器成功,我将收到 200 代码的响应。他们没有告诉其他任何事情.. 我可以简单地在浏览器上写一个 url 并提交相同的内容吗?还是我必须使用编程语言?
  • 理想情况下,您必须使用 html 和 jquery 以及 AJAX 请求到 PHP 文件,该文件使用 POST 发送数据。在 PHP 文件中,您可以使用 CURL 请求 POST 到您的 url 并检索响应。

标签: json http url post


【解决方案1】:

根据您提供的内容,您需要做的事情非常简单,您甚至可以通过多种方式去做。您将需要一些可以让您在请求中发布正文的东西。几乎任何编程语言以及 cURL 等命令行工具都可以做到这一点。

你已经决定了你的工具,你需要创建你的 JSON 主体并将它提交到服务器。

使用 cURL 的示例是(全部在一行中,减去第一行末尾的 \):

curl -v -H "Content-Type: application/json" -X POST \
     -d '{"name":"your name","phonenumber":"111-111"}' http://www.abc.com/details

上述命令将创建一个如下所示的请求:

POST /details HTTP/1.1
Host: www.abc.com
Content-Type: application/json
Content-Length: 44

{"name":"your name","phonenumber":"111-111"}

【讨论】:

    【解决方案2】:

    您可以使用类似的 JavaScript 和 Jquery 将数据发布到 url:

    $.post("www.abc.com/details", {
        json_string: JSON.stringify({name:"John", phone number:"+410000000"})
    });
    

    【讨论】:

    • 在我的情况下 $.post("details", {name: "John, phone: "555-555-5555"}); 就像一个魅力。提示:在浏览器控制台中执行此操作,同时访问 www.abc.com
    【解决方案3】:

    无法直接在 URL 中发送 POST 参数。 POST 请求本身意味着在正文中发送信息。

    我找到了一个相当简单的方法来做到这一点。使用 Google 的 Postman,它允许您将内容类型(标头字段)指定为 application/json,然后提供名称-值对作为参数。

    您可以在 [2020-09-04:断开的链接 - 见评论]http://docs.brightcove.com/en/video-cloud/player-management/guides/postman.html找到明确的方向

    只需使用您的网址代替他们的网址即可。

    【讨论】:

    【解决方案4】:

    你可以使用邮递员。

    选择 Post 作为方法。 并在请求正文中发送 JSON 对象。

    【讨论】:

      【解决方案5】:

      在 Windows 中,此命令对我不起作用..我尝试了以下命令,它起作用了..使用此命令,我在 couchdb 同步网关方式中为特定用户创建了会话...

      curl -v -H "Content-Type: application/json" -X POST -d "{ \"name\": \"abc\",\"password\": \"abc123\" }" http://localhost:4984/todo/_session
      

      【讨论】:

        【解决方案6】:

        如果您通过浏览器的 url 发送请求(例如使用 web 服务)而不使用 html 页面,默认情况下它将是 GET,因为 GET 没有/不需要正文。如果您想将 url 设为 POST,您需要 html/jsp 页面,并且您必须在表单标签中提及“method=post”,因为 post 将具有正文,并且出于安全原因,数据将在该正文中传输。所以你需要一个媒介(比如 html 页面)来发出 POST 请求。除非您通过某种媒介将 URL 指定为 POST,否则您不能手动将 URL 设为 POST。例如在 URL 中(http://example.com/details?name=john&phonenumber=445566)you 附加了数据(姓名,电话号码),因此服务器会将其识别为 GET 数据,因为服务器通过 URL 接收数据,而不是在请求正文中

        【讨论】:

          【解决方案7】:

          在 Java 中,您可以使用 GET 在 URL 上显示请求的数据。但 POST 方法不能,因为 POST 有正文但 GET 没有正文。

          【讨论】:

          • 可以 POST 到具有 GET 参数(query)的 URL,并且 GET can 具有正文。无论如何,这并不能回答问题。
          • @CodeCaster 也许在 RESTFUL Web 服务 GET 中可以有正文,我不知道。但是,我正在关注 O'reilly 的书 HEAD FIRST - JSP and Servlet。根据那本书,我的上面答案中的陈述是正确的。它可能不是发布问题的适当答案。您可以在该书中看到第 110 页。GET 没有正文。其中 POST 具有消息正文,这是 POST 处理更多数据并采用比 GET 更多参数的关键点。
          • 但是 OP 并没有询问是否使用 POST 或 GET 的建议,问题是 如何发出 POST 请求
          猜你喜欢
          • 2011-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-25
          相关资源
          最近更新 更多