Android - Возможно ли сделать Http-Post с нестандартными параметрами - PullRequest
2 голосов
/ 30 марта 2012

Я реализую приложение для Android, в котором я хочу использовать некоторые методы с сервера (который не был реализован мной).Теперь, когда я пытаюсь создать http-пост, где мне нужно передать только строковые параметры, все работает нормально с таким кодом:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

nameValuePairs.add(new BasicNameValuePair("user[email]", email));
nameValuePairs.add(new BasicNameValuePair("user[password]", password));

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

ResponseHandler<String> responseHandler=new BasicResponseHandler();
String responseBody = httpclient.execute(httppost, responseHandler);
JSONObject response=new JSONObject(responseBody);   
System.out.println("RESPONSE " + response.toString());

Я получаю ответ в виде объекта json, который я могу легко использоватьатрибуты, которые я хочу.

Теперь есть методы, которые требуют не строковых значений (целых или логических) в качестве параметров.Я не могу передать эти аргументы в списке, таком как List<NameValuePair>, так как для этого нужны только строки.Я тоже пытался передать его как объект json, но безуспешно.

Итак, мой первый вопрос: можно ли иметь не-строковые параметры в посте http?И если да, как это должно быть сделано?Например, если в приведенном выше коде электронное письмо было целым числом, а пароль - логическим (в качестве примера), как мне с ними обращаться?

Заранее всем спасибо!

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Все параметры http-запроса будут представлены в виде строк, но код на стороне сервера может их преобразовать.Например, сервер может получить строку JSON из параметра запроса и превратить ее в объект, содержащий любое количество сериализованных данных.Это может включать целые числа, списки и т. Д.

Реализация будет зависеть от этого кода на стороне сервера.Например, и клиент, и сервер могут использовать GSON для отправки объектов и списков туда и обратно.

public void doPost(...)
{
    String param = request.getParameter("someParam");
    MyCustomObject myCustomObject = (MyCustomObject)gson.fromJson(param, MyCustomObject.class);
}
0 голосов
/ 30 марта 2012

Конечно, рассмотрите возможность загрузки файла.

Файл является двоичным (хорошо, рассмотрите возможность загрузки изображения, если кто-то считает, что текст недостаточно двоичный)

Техника http-поста

...