Как мы передаем параметры при выполнении HTTP Post? - PullRequest
0 голосов
/ 02 декабря 2009

Я работаю над приложением, в котором мы должны передавать определенные параметры веб-API в веб-приложение, используя HTTP POST. например: имя апиметода значение параметра1 значение параметра2 Так я использую строку или URLEncodedPostData для отправки этих данных? Было бы хорошо, если бы вы помогли мне с кодом, например. Я использую что-то вроде этого, но он не отправляет данные на сервер. Хотя код ответа в порядке / 200, и я также получаю проанализированный ответ HTML, когда я читаю поток ввода httpresponse. Но код ничего не публикует. Поэтому не удалось получить ожидаемый ответ.

             _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 ]

2 голосов
/ 02 декабря 2009

Код, который вы разместили выше, выглядит правильно - хотя вы захотите сделать еще несколько вещей (возможно, вы уже сделали это, но не включили его в свой код):

  1. Закрыть выходной поток, как только вы записали в него все байты
  2. Звоните getResponseCode() по соединению, чтобы он действительно отправил запрос
1 голос
/ 02 декабря 2009

Метод post позволяет использовать довольно произвольные тела сообщений - так что это любой формат, который хочет сервер.

1 голос
/ 02 декабря 2009

POST-параметры обычно отправляются в ответе 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].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...