我们如何通过GET方法发送数据?

Boh*_*ian 7 https blackberry get http

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

_httpsConnection = (HttpsConnection) Connector.open(URL, Connector.READ_WRITE);
_httpsConnection.setRequestMethod(HttpsConnection.GET);
Run Code Online (Sandbox Code Playgroud)

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

_httpsConnection.setRequestProperty("method", "session.getToken");
_httpsConnection.setRequestProperty("developerKey", "value");
_httpsConnection.setRequestProperty("clientID", "value");
Run Code Online (Sandbox Code Playgroud)

或者我必须写入连接的输出流?

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

Mar*_*ski 8

调用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();
Run Code Online (Sandbox Code Playgroud)


Rub*_*ias 6

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
Run Code Online (Sandbox Code Playgroud)

请注意字符分隔符的遵循规则:

? - split URL in two pieces: adddress to left and paremeters to right
& - must be used to separate on parameter from another
Run Code Online (Sandbox Code Playgroud)

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