POST:在URL本身发送POST请求

39

我被给定了一个url地址..www.abc.com/details,并被要求使用POST方法将我的姓名和电话号码发送到这个url。他们告诉我要将内容类型设置为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发送相同的内容吗?

请帮忙。


1
你需要从哪里发送这个请求?是应用程序还是网页?使用什么编程语言? - CodeCaster
你正在尝试实现哪种编程语言? - thar45
那就是重点...他们只是告诉我如果成功,我将从服务器获得200代码的响应。他们没有告诉我其他任何信息...我可以在浏览器上简单地编写一个URL并提交吗?还是必须使用编程语言? - Rebooting
理想情况下,您需要使用HTML和jQuery,结合一个AJAX请求发送到一个PHP文件,该文件使用POST方法发送数据。在PHP文件中,您可以使用CURL请求将数据POST到您的URL并检索响应。 - Mysteryos
7个回答

49

根据您提供的信息,您需要做的事情相当简单,而且您有许多方法可以完成它。您需要一个可以帮助您发布请求正文的工具。几乎任何编程语言都可以做到这一点,还有像cURL这样的命令行工具。

一旦您决定使用哪个工具,您需要创建JSON正文并将其提交到服务器。

使用cURL的示例(一行,除了第一行末尾的\)如下:

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

上述命令将创建一个请求,应该看起来像下面这样:

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

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

感谢您添加了curl的使用。这有助于不熟悉REST终端点的程序员了解如何仅使用终端创建一个终端点的基本机制。 - forrestDinos

8
你可以使用JavaScript和Jquery将数据发布到URL,类似于这样:

您可以使用JavaScript和Jquery将数据发布到URL,类似于以下内容:

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

1
在我的情况下,$.post("details", {name: "John, phone: "555-555-5555"}); 很顺利地工作了。提示:在访问www.abc.com时,在浏览器控制台中执行此操作。 - Ivan Vashchenko

5
无法直接在URL中发送POST参数。POST请求本身意味着在正文中发送信息。
我找到了一个相当简单的方法。使用Google的Postman,它允许您将内容类型(一个标题字段)指定为application/json,然后提供名称-值对作为参数。
您可以在[2020-09-04:链接失效 - 请参见评论] http://docs.brightcove.com/en/video-cloud/player-management/guides/postman.html找到清晰的说明。
只需使用您的URL替换他们的URL即可。

链接已经失效:传统应用程序在 https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop 但您可能想要的是:https://chrome.google.com/webstore/detail/tabbed-postman-rest-clien/coohjcphdfgbiolnekdpbcijmhambjff [买家自负:我没有验证任何一个应用程序] - Alexx Roche
如果您像使用GET请求一样将所有参数发送到URL中会怎么样? - étale-cohomology

2
你可以使用Postman。选择Post作为方法,在请求正文中发送JSON对象。"Original Answer"翻译成"最初的回答"。

2
如果您从浏览器通过URL发送请求(例如使用Web服务),而不使用HTML页面,默认情况下将是GET,因为GET没有/需要主体。如果您想将URL设置为POST,则需要HTML / JSP页面,并在表单标记中指定“method = post”,因为POST将具有主体,并且数据将在该主体中传输,以确保安全性。因此,您需要一个介质(如HTML页面)来发出POST请求。除非通过某些介质将其指定为POST,否则无法手动将URL设置为POST。例如,在URL({{link1:http://example.com/details?name=john&phonenumber=445566)you}}附加了数据(姓名,电话号码),因此服务器将其识别为GET数据,因为服务器通过URL接收数据,但不在请求正文中。

1
在 Windows 中,这个命令对我无效。我尝试了以下命令,并且它有效。使用这个命令,我为特定用户在 CouchDB 同步网关中创建了会话。
curl -v -H "Content-Type: application/json" -X POST -d "{ \"name\": \"abc\",\"password\": \"abc123\" }" http://localhost:4984/todo/_session

-4
在Java中,您可以使用GET来显示URL上请求的数据。但是POST方法不行,因为POST有请求体而GET没有请求体。

4
您可以向带有GET参数(查询)的URL发送POST请求,而GET请求也可以具有正文。但是,这并没有回答问题。 - CodeCaster
@CodeCaster也许在RESTful Web服务中GET方法可以有请求体,我不确定。但是,我正在按照O'reilly出版的《HEAD FIRST-JSP和Servlet》这本书学习。根据该书,我的上述答案是正确的。它可能不是适当的回答所发布的问题。您可以查看该书第110页。GET方法没有请求体,而POST方法具有消息主体,这是POST方法处理更多数据并接受更多参数的关键点。 - JDGuide
但是 OP 并不是在询问使用 POST 还是 GET 的建议,问题是如何发出 POST 请求。 - CodeCaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接