Я пытаюсь понять, как отправить JSON с Android на POST с помощью HTTPClient. Я пытался понять это некоторое время, я нашел множество примеров в Интернете, но я не могу заставить ни один из них работать. Я считаю, что это связано с отсутствием у меня знаний о JSON / сетях в целом. Я знаю, что существует множество примеров, но может ли кто-нибудь указать мне на настоящий учебник? Я ищу пошаговый процесс с кодом и объяснением, почему вы делаете каждый шаг или что делает этот шаг. Это не должно быть сложным, достаточно простого.
Опять же, я знаю, что существует масса примеров, я просто действительно ищу пример с объяснением того, что именно происходит и почему это происходит именно так.
Если кто-то знает об этой хорошей книге для Android, дайте мне знать.
Еще раз спасибо за помощь @terrance, вот код, который я описал ниже
public void shNameVerParams() throws Exception{
String path = //removed
HashMap params = new HashMap();
params.put(new String("Name"), "Value");
params.put(new String("Name"), "Value");
try {
HttpClient.SendHttpPost(path, params);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
источник
Ответы:
В этом ответе я использую пример, опубликованный Джастином Грамменсом. .
О JSON
JSON расшифровывается как JavaScript Object Notation. В свойствах JavaScript можно ссылаться как на это, так
object1.name
и на этоobject['name'];
. В примере из статьи используется этот бит JSON.Части
Фан-объект с электронной почтой в качестве ключа и foo@bar.com в качестве значения
Таким образом, эквивалент объекта будет
fan.email;
илиfan['email'];
. Оба будут иметь одинаковое значение'foo@bar.com'
.О запросе HttpClient
Ниже приводится то, что наш автор использовал для создания запроса HttpClient . Я вовсе не претендую на звание эксперта в этом вопросе, поэтому, если у кого-то есть лучший способ сформулировать некоторые термины, не стесняйтесь.
карта
Если вы не знакомы со
Map
структурой данных, взгляните на справочник Java Map . Короче говоря, карта похожа на словарь или хеш.Пожалуйста, не стесняйтесь комментировать любые вопросы, которые возникают по поводу этого поста, или если я что-то не прояснил, или если я не коснулся того, что вас все еще смущает ...
(Я сниму, если Джастин Грэмменс не одобрит. Но если нет, то спасибо Джастину за то, что он к этому относится.)
Обновить
Я просто случайно получил комментарий о том, как использовать код, и понял, что в возвращаемом типе есть ошибка. Сигнатура метода была настроена на возврат строки, но в данном случае она ничего не возвращала. Я изменил подпись на HttpResponse и отсылаю вас к этой ссылке « Получение тела ответа HttpResponse», переменная пути - это URL-адрес, и я обновился, чтобы исправить ошибку в коде.
источник
getJsonObjectFromMap()
: JSONObject имеет конструктор, который принимаетMap
: developer.android.com/reference/org/json/…Вот альтернативное решение ответа @Terrance. Вы можете легко передать конверсию на аутсорсинг. Библиотека Gson отлично справляется с преобразованием различных структур данных в JSON и наоборот.
Аналогичное можно сделать, используя Джексона вместо Джексона. Я также рекомендую взглянуть на Retrofit, который скрывает для вас большую часть этого шаблонного кода. Более опытным разработчикам я рекомендую попробовать RxAndroid .
источник
execute()
и он, конечно же, не работаетЯ рекомендую использовать это
HttpURLConnection
вместо этогоHttpGet
. КакHttpGet
уже не рекомендуется в Android API уровня 22.источник
Слишком много кода для этой задачи, проверьте эту библиотеку https://github.com/kodart/Httpzoid. Is использует GSON внутренне и предоставляет API, который работает с объектами. Все детали JSON скрыты.
источник
Есть несколько способов установить соединение HHTP и получить данные из веб-службы RESTFULL. Самый последний - GSON. Но прежде чем перейти к GSON, вы должны иметь некоторое представление о наиболее традиционном способе создания HTTP-клиента и выполнения обмена данными с удаленным сервером. Я упомянул оба метода для отправки запросов POST и GET с использованием HTTPClient.
источник