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

Http请求POST与GET

郦良才
2023-03-14
问题内容

我在使用OAuth编写的应用程序中使用了许多HTTP请求。目前,我以相同的方式发送GET和POST请求:

HttpConnection connection = (HttpConnection) Connector.open(url
                    + connectionParameters);

            connection.setRequestMethod(method);
            connection.setRequestProperty("WWW-Authenticate",
                    "OAuth realm=api.netflix.com");

            int responseCode = connection.getResponseCode();

这工作正常。我成功地发布和获取。但是,我担心我没有正确执行POST。我需要在上面的代码中包含以下if语句吗?

if (method.equals("POST") && postData != null) {
                    connection.setRequestProperty("Content-type",
                            "application/x-www-form-urlencoded");
                    connection.setRequestProperty("Content-Length", Integer
                            .toString(postData.length));
                    OutputStream requestOutput = connection.openOutputStream();
                    requestOutput.write(postData);
                    requestOutput.close();
                }

如果是这样,为什么?有什么不同?我将不胜感激任何反馈。

谢谢!


问题答案:
connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");

内容类型必须与的 实际 格式匹配postDataapplication/x-www-form- urlencoded仅当内容类型实际经过url编码时,才需要内容类型。例如,您对POST数据进行如下编码:

String data = "param1=" + URLEncoder.encode(param1, "UTF-8")
           + "&param2=" + URLEncoder.encode(param2, "UTF-8");

这样,另一端将能够根据指定的格式解析数据而不会破坏数据。

和,

connection.setRequestProperty("Content-Length", Integer.toString(postData.length));

这对于确保可靠的数据传输是优选的。如果您忽略此设置,并且连接以某种方式断开,则另一端将永远无法确定内容是否已完全流式传输。

就是说,HttpUrlConnection如果您知道将请求方法“自动”设置为以下事实,则无需强制转换为POST

connection.setDoOutput(true);

或者您更适合:

connection.setDoOutput("POST".equals(method));


 类似资料:
  • 希望在Mulesoft HTTP请求中实现以下功能 卷曲“https://somedomain.com/1/1/1/search“ -X POST -H”授权:承载令牌”

  • 问题内容: 我正在尝试发出POST请求以检索有关一本书的信息。这是返回HTTP代码的代码:302,已移动 当我从浏览器尝试时,可以从以下页面进行操作:http : //www.bkstr.com/webapp/wcs/stores/servlet/BuybackMaterialsView?langId=-1&catalogId=10001&storeId=10051&schoolStoreId=1

  • 我试图做一个POST请求,但我不能让它工作: 我基本上想复制这个超文本传输协议请求(不是ajax),就像它是由html表单发起的一样: URL:/api 参数:用户名和密码

  • 本文向大家介绍HTTP GET和POST请求的区别?相关面试题,主要包含被问及HTTP GET和POST请求的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: get参数通过url传递,post放在request body中。 get请求在url中传递的参数是有长度限制的,而post没有。 get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。 get请求只能

  • 问题内容: 让我们假设这个网址… (此处的ID需要在POST请求中发送) 我想将其发送到服务器的,该服务器在POST方法中接受它。 如何在Java中执行此操作? 我尝试了这个: 但是我仍然不知道如何通过POST发送 问题答案: 由于原始答案中的某些类已在Apache HTTP Components的较新版本中弃用,因此,我将发布此更新。 顺便说一句,你可以在此处访问完整的文档以获取更多示例。