I need an alternative option to HttpClient in Android to send data to PHP as it is no longer supported I need an alternative option to HttpClient in Android to send data to PHP as it is no longer supported android android

I need an alternative option to HttpClient in Android to send data to PHP as it is no longer supported


I've also encountered with this problem to solve that I've made my own class.Which based on java.net, and supports up to android's API 24 please check it out:HttpRequest.java

Using this class you can easily:

  1. Send Http GET request
  2. Send Http POST request
  3. Send Http PUT request
  4. Send Http DELETE
  5. Send request without extra data params & check response HTTP status code
  6. Add custom HTTP Headers to request (using varargs)
  7. Add data params as String query to request
  8. Add data params as HashMap {key=value}
  9. Accept Response as String
  10. Accept Response as JSONObject
  11. Accept response as byte [] Array of bytes (useful for files)

and any combination of those - just with one single line of code)

Here are a few examples:

//Consider next request: HttpRequest req=new HttpRequest("http://host:port/path");

Example 1:

//prepare Http Post request and send to "http://host:port/path" with data params name=Bubu and age=29, return true - if workedreq.prepare(HttpRequest.Method.POST).withData("name=Bubu&age=29").send();

Example 2:

// prepare http get request,  send to "http://host:port/path" and read server's response as String req.prepare().sendAndReadString();

Example 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=new HashMap<>();params.put("name", "Groot"); params.put("age", "29");req.prepare(HttpRequest.Method.POST).withData(params).sendAndReadJSON();

Example 4:

//send Http Post request to "http://url.com/b.c" in background  using AsyncTasknew AsyncTask<Void, Void, String>(){        protected String doInBackground(Void[] params) {            String response="";            try {                response=new HttpRequest("http://url.com/b.c").prepare(HttpRequest.Method.POST).sendAndReadString();            } catch (Exception e) {                response=e.getMessage();            }            return response;        }        protected void onPostExecute(String result) {            //do something with response        }    }.execute(); 

Example 5:

//Send Http PUT request to: "http://some.url" with request header:String json="{\"name\":\"Deadpool\",\"age\":40}";//JSON that we need to sendString url="http://some.url";//URL address where we need to send it HttpRequest req=new HttpRequest(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 PUTreq.withData(json);//Add json data to request bodyJSONObject res=req.sendAndReadJSON();//Accept response as JSONObject

Example 6:

//Equivalent to previous example, but in a shorter way (using methods chaining):String json="{\"name\":\"Deadpool\",\"age\":40}";//JSON that we need to sendString url="http://some.url";//URL address where we need to send it //Shortcut for example 5 complex request sending & reading response in one (chained) lineJSONObject res=new HttpRequest(url).withHeaders("Content-Type: application/json").prepare(HttpRequest.Method.PUT).withData(json).sendAndReadJSON();

Example 7:

//Downloading filebyte [] file = new HttpRequest("http://some.file.url").prepare().sendAndReadBytes();FileOutputStream fos = new FileOutputStream("smile.png");fos.write(file);fos.close();


The HttpClient was deprecated and now removed:

org.apache.http.client.HttpClient:

This interface was deprecated in API level 22. Please use openConnection() instead. Please visit this webpage for further details.

means that you should switch to java.net.URL.openConnection().

See also the new HttpURLConnection documentation.

Here's how you could do it:

URL url = new URL("http://some-server");HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");// read the responseSystem.out.println("Response Code: " + conn.getResponseCode());InputStream in = new BufferedInputStream(conn.getInputStream());String response = org.apache.commons.io.IOUtils.toString(in, "UTF-8");System.out.println(response);

IOUtils documentation: Apache Commons IO
IOUtils Maven dependency: http://search.maven.org/#artifactdetails|org.apache.commons|commons-io|1.3.2|jar


The following code is in an AsyncTask:

In my background process:

String POST_PARAMS = "param1=" + params[0] + "&param2=" + params[1];URL obj = null;HttpURLConnection con = null;try {    obj = new URL(Config.YOUR_SERVER_URL);    con = (HttpURLConnection) obj.openConnection();    con.setRequestMethod("POST");    // For POST only - BEGIN    con.setDoOutput(true);    OutputStream os = con.getOutputStream();    os.write(POST_PARAMS.getBytes());     os.flush();    os.close();    // For POST only - END    int responseCode = con.getResponseCode();    Log.i(TAG, "POST Response Code :: " + responseCode);    if (responseCode == HttpURLConnection.HTTP_OK) { //success         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));         String inputLine;         StringBuffer response = new StringBuffer();         while ((inputLine = in.readLine()) != null) {              response.append(inputLine);         }         in.close();         // print result            Log.i(TAG, response.toString());            } else {            Log.i(TAG, "POST request did not work.");            }        } catch (IOException e) {            e.printStackTrace();        }

Reference:http://www.journaldev.com/7148/java-httpurlconnection-example-to-send-http-getpost-requests