从一台服务器到另一台服务器的java POST请求
情况如下。 我在我的服务器上收到一个请求,对其进行一些处理,然后我需要根据我的处理将请求放到另一台服务器上,然后根据我从远程服务器获得的信息构建响应。 这将在JAVA Playframework 2.0中完成,我缺少从远程服务器发送请求和获取响应的部分。 任何帮助都将不胜感激。 谢谢:)
你可以在下面搜索框中键入要查询的问题!
情况如下。 我在我的服务器上收到一个请求,对其进行一些处理,然后我需要根据我的处理将请求放到另一台服务器上,然后根据我从远程服务器获得的信息构建响应。 这将在JAVA Playframework 2.0中完成,我缺少从远程服务器发送请求和获取响应的部分。 任何帮助都将不胜感激。 谢谢:)
# 1 楼答案
要从播放服务器调用请求,应该使用WS API。它易于使用,还可以以异步方式进行远程调用:
更多信息请访问Play documentation
# 2 楼答案
准备
我们首先需要至少知道URL和
charset
。这些参数是可选的,取决于功能要求查询参数必须采用name=value格式,并由&;连接;。您通常也会使用
URLEncoder#encode()
使用指定的charset
对查询参数进行URL编码字符串#format()只是为了方便起见。当我需要字符串连接运算符+两次以上时,我更喜欢它
使用(可选)查询参数触发HTTP GET请求:
这是一项微不足道的任务。这是默认的请求方法
任何查询字符串都应使用?连接到URL?。
Accept-Charset
头可能会提示服务器参数的编码方式。如果不发送任何查询字符串,那么可以将Accept-Charset
头放在一边。如果不需要设置任何标题,那么甚至可以使用URL#openStream()
快捷方式无论哪种方式,如果另一端是
HttpServlet
,那么它的doGet()
方法将被调用,参数将由HttpServletRequest#getParameter()
提供。 使用查询参数触发HTTP POST请求:使用查询参数触发HTTP POST请求:
将
URLConnection#setDoOutput()
设置为true会隐式地将请求方法设置为POST。标准的HTTP POST as web froms do类型为application/x-www-form-urlencoded
,其中查询字符串被写入请求主体注意:每当你想以编程方式提交HTML表单时,不要忘了将任何元素的name=value对放入查询字符串中,当然还有您希望以编程方式“按下”的元素的name=value对(因为这通常在服务器端用于区分是否按下了按钮,如果按下了按钮,是哪一个)
您还可以将获得的
URLConnection
强制转换为HttpURLConnection
,并使用其HttpURLConnection#setRequestMethod()
。但是,如果您试图将连接用于输出,您仍然需要将URLConnection
#setDoOutput()
设置为true无论哪种方式,如果另一端是
HttpServlet
,那么它的doPost()
方法将被调用,参数将由HttpServletRequest#getParameter()
提供顺便说一下,这几乎是下面问题的复制粘贴
Using java.net.URLConnection to fire and handle HTTP requests