【问题标题】:How do we send data via GET method?我们如何通过 GET 方法发送数据?
【发布时间】:2010-12-23 04:20:59
【问题描述】:

我正在创建一个 HTTPS 连接并将请求属性设置为 GET:

_httpsConnection = (HttpsConnection) Connector.open(URL, Connector.READ_WRITE);
_httpsConnection.setRequestMethod(HttpsConnection.GET);

但是如何发送 GET 参数呢? 我是否像这样设置请求属性:

_httpsConnection.setRequestProperty("method", "session.getToken");
_httpsConnection.setRequestProperty("developerKey", "value");
_httpsConnection.setRequestProperty("clientID", "value");

还是我必须写入连接的输出流?

或者我是否需要通过将参数/值附加到 url 来发送它?

【问题讨论】:

  • 我不是黑莓开发者。但是您可以使用网络嗅探器(IMO overkill)或简单的服务器端脚本轻松测试您的代码,这些脚本只会输出您的请求信息。例如在 php 中你可以使用:php.net/manual/en/reserved.variables.request.php

标签: http blackberry https get


【解决方案1】:

调用Connection.setRequestProperty() 将设置请求标头,在这种情况下这可能不是您想要做的(如果您问我,我认为调用它setRequestHeader 会是更好的选择) .一些代理可能会剥离或重写非标准标头的名称,因此您最好坚持通过 URL 参数在 GET URL 中传递数据的约定。

在 BlackBerry 上执行此操作的最佳方法是使用 URLEncodedPostData 类正确编码您的 URL 参数:

URLEncodedPostData data = new URLEncodedPostData("UTF-8", false);
data.append("method", "session.getToken");
data.append("developerKey", "value");
data.append("clientID", "value");
url = url + "?" + data.toString();

【讨论】:

    【解决方案2】:

    HTTP GET 将数据参数作为编码在 URL 中的键/值对发送,就像:

    GET /example.html                      // without parameters
    GET /example.html?Id=         1        // with one basic parameter
    GET /example.html?Id=1&Name=John%20Doo // with two parameters, second encoded
    

    注意字符分隔符的规则:

    ? - split URL in two pieces: adddress to left and paremeters to right
    & - must be used to separate on parameter from another
    

    您必须了解您的平台特定的本机字符串编码功能。 Javascript 使用escape,C# 使用HttpUtility.UrlEncode

    【讨论】:

      【解决方案3】:

      是的,标题和属性几乎是您可以在 GET 中发送的所有内容。此外,您只能使用一定数量的字符,这取决于浏览器 - 我记得通常是 1024 或 2000 个。

      【讨论】:

      • 嘿,我需要通过标头发送参数/值还是将其附加到 url
      • 您可以将其附加到 url
      • 不知道您的环境是如何工作的,但最终您的请求参数将包含在 URL 中。您可以直接执行此操作(使用 & 分隔键/值对、键和值之间的 =、字符串中的 URL 转义字符)或希望让您的 API 自动为您执行这些操作。
      猜你喜欢
      • 2014-02-08
      • 2020-08-24
      • 1970-01-01
      • 2016-04-05
      • 2018-02-13
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多