I need an alternative option to HttpClient in Android to send data to PHP as it is no longer supported
Мне нужен альтернативный вариант HttpClient в Android для отправки данных на PHP, поскольку он больше не поддерживается
В настоящее время я использую HttpClient, HttpPost для отправки данных в my PHP server из Android app но все эти методы устарели в API 22 и удалены в API 23, так какие же у него альтернативные варианты?
Я искал везде, но ничего не нашел.
Переведено автоматически
Ответ 1
Я также столкнулся с этой проблемой, для решения которой я создал свой собственный класс. Который основан на java.net и поддерживает до Android API 24, пожалуйста, проверьте это: HttpRequest.java
Используя этот класс, вы можете легко:
Отправить Http GET запрос
Отправить Http POST запрос
Отправить Http PUT запрос
Отправить Http DELETE
Отправить запрос без дополнительных параметров данных и проверить ответ HTTP status code
Добавить пользовательский HTTP Headers в запрос (используя varargs)
Добавьте параметры данных в качестве String запроса к запросу
Добавьте параметры данных как HashMap {ключ = значение}
Принять ответ как String
Принять ответ как JSONObject
Принять ответ в виде byte [] массива байтов (полезно для файлов)
и любая их комбинация - только одной строкой кода)
Вот несколько примеров:
//Consider next request: HttpRequest req=newHttpRequest("http://host:port/path");
Пример 1:
//prepare Http Post request and send to "http://host:port/path" with data params name=Bubu and age=29, return true - if worked req.prepare(HttpRequest.Method.POST).withData("name=Bubu&age=29").send();
Пример 2:
// prepare http get request, send to "http://host:port/path" and read server's response as String req.prepare().sendAndReadString();
Пример 3:
// prepare Http Post request and send to "http://host:port/path" with data params name=Bubu and age=29 and read server's response as JSONObject HashMap<String, String>params=newHashMap<>(); params.put("name", "Groot"); params.put("age", "29"); req.prepare(HttpRequest.Method.POST).withData(params).sendAndReadJSON();
Пример 4:
//send Http Post request to "http://url.com/b.c" in background using AsyncTask newAsyncTask<Void, Void, String>(){ protected String doInBackground(Void[] params) { String response=""; try { response=newHttpRequest("http://url.com/b.c").prepare(HttpRequest.Method.POST).sendAndReadString(); } catch (Exception e) { response=e.getMessage(); } return response; } protectedvoidonPostExecute(String result) { //do something with response } }.execute();
Пример 5:
//Send Http PUT request to: "http://some.url" with request header: String json="{\"name\":\"Deadpool\",\"age\":40}";//JSON that we need to send String url="http://some.url";//URL address where we need to send it HttpRequest req=newHttpRequest(url);//HttpRequest to url: "http://some.url" req.withHeaders("Content-Type: application/json");//add request header: "Content-Type: application/json" req.prepare(HttpRequest.Method.PUT);//Set HttpRequest method as PUT req.withData(json);//Add json data to request body JSONObject res=req.sendAndReadJSON();//Accept response as JSONObject
Пример 6:
//Equivalent to previous example, but in a shorter way (using methods chaining): String json="{\"name\":\"Deadpool\",\"age\":40}";//JSON that we need to send String url="http://some.url";//URL address where we need to send it //Shortcut for example 5 complex request sending & reading response in one (chained) line JSONObject res=newHttpRequest(url).withHeaders("Content-Type: application/json").prepare(HttpRequest.Method.PUT).withData(json).sendAndReadJSON();
Этот интерфейс устарел на уровне API 22. Пожалуйста, используйте вместо этого openConnection (). Пожалуйста, посетите эту веб-страницу для получения дополнительной информации.
означает, что вам следует переключиться на java.net.URL.openConnection().
// For POST only - BEGIN con.setDoOutput(true); OutputStreamos= con.getOutputStream(); os.write(POST_PARAMS.getBytes()); os.flush(); os.close(); // For POST only - END