Есть ли рекомендуемый способ отправки запроса на андроид? потому что раньше я использую HttpPost
и HttpClient
для выполнения запроса поста, но эти классы теперь осуждается в уровне API 22.Есть ли рекомендуемый способ отправки запроса на андроид?
ответ
Да, они устарели. Вы можете использовать Volley, который рекомендуется Google Dev.
Volley предлагает следующие преимущества: Автоматическое планирование сетевых запросов. Несколько одновременных сетевых подключений. Кэш-память прозрачного диска и памяти с согласованием стандартного HTTP-кэша. Поддержка определения приоритетов запроса. API запросов на аннулирование. Вы можете отменить один запрос, или вы можете установить блоки или области запросов для отмены. Простота настройки, например, для повторной попытки и отсрочки. Сильное упорядочение, которое позволяет легко заполнить ваш пользовательский интерфейс данными, полученными асинхронно из сети.
Volley очень прост в использовании:
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Display the first 500 characters of the response string.
mTextView.setText("Response is: "+ response.substring(0,500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didn't work!");
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
Вы можете использовать HttpURLConnection
public String makeRequest(String pageURL, String params)
{
String result = null;
String finalURL =pageURL;
Logger.i("postURL", finalURL);
Logger.i("data", params);
try {
URL url = new URL(finalURL);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
urlConnection.setRequestProperty("Accept", "application/json");
OutputStream os = urlConnection.getOutputStream();
os.write(params.getBytes("UTF-8"));
os.close();
int HttpResultCode =urlConnection.getResponseCode();
if(HttpResultCode ==HttpURLConnection.HTTP_OK){
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
result = convertStreamToString(in);
Logger.i("API POST RESPONSE",result);
}else{
Logger.e("Error in response ", "HTTP Error Code "+HttpResultCode +" : "+urlConnection.getResponseMessage());
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
Затем преобразования потока в строку
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
Создайте свой JSON
JSONObject j=new JSONObject();
try {
j.put("name","hello");
j.put("email","[email protected]");
} catch (JSONException e) {
e.printStackTrace();
}
//Call the method
makeRequest("www.url.com",j.toString());
Просто, чтобы показать другую возможную библиотеку, которая могла бы помочь вам: OkHttp
С примерного постом от их Webseite:
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
или Retrofit.
Вы в основном создать интерфейс с аннотациями о остальных API и параметров вы призывающих, и может получить разобранный модель JSon так:
public interface MyService {
@POST("/api")
void createTask(@Body CustomObject o, Callback<CustomObject > cb);
}
Вы можете установить их обоих и вместе, вот руководство, которое мне очень помогло: https://futurestud.io/blog/retrofit-getting-started-and-android-client/
Несмотря на то, что это не официальный способ, рекомендуемый в документах google, это красивые библиотеки, на которые стоит обратить внимание.
- 1. Есть ли рекомендуемый способ проверить, является ли смарт-указатель нулевым?
- 2. Рекомендуемый способ запроса нескольких таблиц с версией
- 3. Рекомендуемый способ написания запроса к базе данных
- 4. Есть ли рекомендуемый способ обновления границ версии для пакетов cabal?
- 5. Есть ли рекомендуемый способ установки переменных среды для тестов CUnit?
- 6. Есть ли способ автоматического запуска отправки без нажатия кнопки отправки?
- 7. Есть ли способ установить дату и время отправки запроса отправки Twilio?
- 8. Есть ли рекомендуемый способ тестирования Solr 3.6 JUnit?
- 9. Есть ли рекомендуемый способ настройки прослушивателей клавиатуры для вашего приложения?
- 10. Есть ли какой-либо рекомендуемый способ автоматизации подключения порта модуля?
- 11. Есть ли рекомендуемый способ процедурного создания html-отчета
- 12. Рекомендуемый способ чтения сокета на HTTP-сервере
- 13. Есть ли простой способ отправки данных на USB через NodeJS?
- 14. Рекомендуемый способ отправки электронной почты из веб-приложения?
- 15. Есть ли способ запроса на удаленный документ на SOLR?
- 16. Mercurial: Рекомендуемый способ отправки целого репозитория кому-то
- 17. Есть ли способ найти значение запроса?
- 18. PHP: Есть ли способ изменить адрес запроса?
- 19. Рекомендуемый способ обнаружения сеансов
- 20. Рекомендуемый способ выхода на полный экран
- 21. Рекомендуемый способ обновления STS?
- 22. Есть ли способ прокси-запроса ответить прямо на запрос?
- 23. WSO2ESB. Есть ли способ установить заголовок запроса на? Tryit tool
- 24. Есть ли способ объединить эти два запроса запроса?
- 25. Есть ли способ буферизации и запроса запросов страницы в ServiceStack
- 26. Рекомендуемый способ инициализации srand?
- 27. Рекомендуемый способ создания поворотов
- 28. Рекомендуемый способ создания UITabBar
- 29. Рекомендуемый способ отправки SQL как строки на сервер backend в javascript
- 30. Есть ли способ использовать calabash-андроид без команды установки gem
Вы можете использовать Volley или менеджер UrlConnection – Madhu