Deprecated methods, how can I replace it with new ones

I have a problem with some deprecated methods, in particular with this one that I posted here.

What I want is simple: send data to the server using http post ---> make a request with the data that I receive from the client, → send a response

I am trying to develop an Android application using API 6.0, but all my methods are deprecated, what should I change to convert my code with a new one?

public class ReadServer extends Activity { String result; public String readserver(String id_data, String data){ try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost("myurl/queryMobile.php"); StringBuilder builder = new StringBuilder(); String json = ""; //Build jsonObject JSONObject jsonObject = new JSONObject(); jsonObject.accumulate(id_data, data); //Convert JSONObject to JSON to String json = jsonObject.toString(); //Set json to StringEntity StringEntity se = new StringEntity(json); //Set httpPost Entity httpPost.setEntity(se); //Set some headers to inform server about the type of the content httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", "application/json"); //Execute POST request to the given URL HttpResponse httpResponse = httpclient.execute(httpPost); //Receive response as inputStream StatusLine statusLine = httpResponse.getStatusLine(); int statusCode = statusLine.getStatusCode(); //Convert input stream to string AlertDialog.Builder alertDialog; switch(statusCode){ case 200: HttpEntity entity = httpResponse.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(content)); String line=""; try{ while ((line = reader.readLine()) != null) { builder.append(line); result = builder.toString(); } }catch(Exception e){ alertDialog = new AlertDialog.Builder(this); alertDialog.setTitle("400 Bad Request"); alertDialog.setMessage("Non è stato possibile soddisfare la tua richiesta, riprova più tardi."); alertDialog.show(); } break; case 500: alertDialog = new AlertDialog.Builder(this); alertDialog.setTitle("500 Internal Server Error"); alertDialog.setMessage("Non è stato possibile soddisfare la tua richiesta, riprova più tardi."); alertDialog.show(); break; case 503: alertDialog = new AlertDialog.Builder(this); alertDialog.setTitle("503 Service Unavailable"); alertDialog.setMessage("Il server di ....non è al momento disponibile, riprova più tardi."); alertDialog.show(); break; case 504: alertDialog = new AlertDialog.Builder(this); alertDialog.setTitle("504 Gateway Timeout"); alertDialog.setMessage("Il server di ....è momentaneamente sovraccarico, riprova più tardi."); alertDialog.show(); break; default: alertDialog = new AlertDialog.Builder(this); alertDialog.setTitle("Si è verificato un errore"); alertDialog.setMessage("Errore 001" +"\n"+"Non è stato possibile soddisfare la tua richiesta, riprova più tardi."); alertDialog.show(); break; } }catch(Exception e){ AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); alertDialog.setTitle("Si è verificato un errore"); alertDialog.setMessage("Errore 001" + "\n" + "Non è stato possibile soddisfare la tua richesta, riprova più tardi."); alertDialog.show(); } return result; } } 

I tried to change some method, but I don’t know how to transform some procedure, for example:

setEntity, HttpResponse, StatusLine ...

I absolutely need to change the obsolete method to a new one, I cannot change all the code.

EDIT 1: For example, in my MainActivity:

  ReadServer read = new ReadServer(); String result = read.readserver("list_news","homepage"); 

In my ReadServer class, enter two parameters:

 public String readserver(String id_data, String data){ ... jsonObject.accumulate(id_data, data); // in a jsonObject i put two params ... } 

I am doing Http Post, my data is being sent to my server (my php page)

 $raw = file_get_contents('php://input'); $value = json_decode($raw, true); $list_news = $value['list_news']; 

At this moment, I get my data, and I can make my request:

 if (isset($list_news)) { switch($list_news){ case "homepage": $q = "SELECT FROM WHERE "; 
+5
source share
1 answer

I think you can refer to my following code sample and then use its logic for your application:

 private class POSTRequest extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { String address = "http://192.16.1.100:24780/api/token"; HttpURLConnection urlConnection; String requestBody; Uri.Builder builder = new Uri.Builder(); Map<String, String> stringMap = new HashMap<>(); stringMap.put("grant_type", "password"); stringMap.put("username", "bnk"); stringMap.put("password", "bnkpwd"); Iterator entries = stringMap.entrySet().iterator(); while (entries.hasNext()) { Map.Entry entry = (Map.Entry) entries.next(); builder.appendQueryParameter(entry.getKey().toString(), entry.getValue().toString()); entries.remove(); } requestBody = builder.build().getEncodedQuery(); try { URL url = new URL(address); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoInput(true); urlConnection.setDoOutput(true); // urlConnection.setRequestMethod("POST"); urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); OutputStream outputStream = new BufferedOutputStream(urlConnection.getOutputStream()); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8")); writer.write(requestBody); writer.flush(); writer.close(); outputStream.close(); JSONObject jsonObject = new JSONObject(); InputStream inputStream; // get stream if (urlConnection.getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST) { inputStream = urlConnection.getInputStream(); } else { inputStream = urlConnection.getErrorStream(); } // parse stream BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String temp, response = ""; while ((temp = bufferedReader.readLine()) != null) { response += temp; } // put into JSONObject jsonObject.put("Content", response); jsonObject.put("Message", urlConnection.getResponseMessage()); jsonObject.put("Length", urlConnection.getContentLength()); jsonObject.put("Type", urlConnection.getContentType()); return jsonObject.toString(); } catch (IOException | JSONException e) { return e.toString(); } } @Override protected void onPostExecute(String result) { super.onPostExecute(result); Log.i(LOG_TAG, "POST\n" + result); } } 

UPDATE:

Using PHP code, you can try the following update:

 ... JSONObject json = new JSONObject(); json.put("key1", "sample value..."); requestBody = json.toString(); URL url = new URL(address); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setDoInput(true); urlConnection.setDoOutput(true); urlConnection.setRequestProperty("Content-Type", "application/json"); OutputStream outputStream = new BufferedOutputStream(urlConnection.getOutputStream()); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8")); writer.write(requestBody); writer.flush(); writer.close(); outputStream.close(); ... 

You can read more on Deprecated HTTP Classes .

Other useful solutions for your reference:

Hope this helps!

+4
source

Source: https://habr.com/ru/post/1235418/


All Articles