我们如何在进行HTTP Post时传递参数?

时间:2009-12-02 10:59:34

标签: http blackberry post

我正在开发一个应用程序,我们必须使用HTTP POST将特定的web api参数传递给Web应用程序。 例如: apimethod名字 parameter1值 parameter2值 那么我是否使用字符串或URLEncodedPostData来发送该数据? 如果你帮我一个代码就好了。 我正在使用这样的东西,但它不会将数据发布到服务器。 虽然响应代码是ok / 200,但当我读取httpresponse输入流时,我也得到一个解析的html响应。但是代码没有发布任何内容。所以无法得到预期的回应。

             _postData.append("method", "session.getToken");
             _postData.append(  "developerKey", "value");
             _postData.append(  "clientID", "value");

            _httpConnection = (HttpConnection) Connector.open(URL, Connector.READ_WRITE);
            String encodedData = _postData.toString();
            _httpConnection.setRequestMethod(HttpConnection.POST);
            _httpConnection.setRequestProperty("User-Agent", "BlackBerry/3.2.1");
            _httpConnection.setRequestProperty("Content-Language", "en-US");
            _httpConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            _httpConnection.setRequestProperty("Content-Length",(new Integer(encodedData.length())).toString());
            os = _httpConnection.openOutputStream();
            os.write(requeststring.getBytes());`

3 个答案:

答案 0 :(得分:2)

您在上面发布的代码看起来是正确的 - 尽管您还想做更多的事情(也许您已经这样做但未在代码中包含它):

  1. 将所有字节写入
  2. 后关闭输出流
  3. 在连接上调用getResponseCode(),以便它实际发送请求

答案 1 :(得分:1)

POSTed参数通常在响应BODY中发送,这意味着对它们进行URL编码是不合适的。引用HTTP / 1.1协议:

  Note: The "multipart/form-data" type has been specifically defined
  for carrying form data suitable for processing via the POST
  request method, as described in RFC 1867 [15].

答案 2 :(得分:1)

post方法允许你使用非常随意的消息体 - 所以它是服务器想要的任何格式。