我正在创建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");
还是必须写入连接的输出流?
或者我是否需要通过将参数/值附加到网址来发送参数/值?
答案 0 :(得分: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();
答案 1 :(得分: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
请注意字符分隔符的遵循规则:
? - 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
答案 2 :(得分:2)
是的,标题和属性几乎都可以在GET中发送。此外,你只限于一定数量的字符,这取决于浏览器 - 我似乎记得大约1024或2000,通常。