NameValuePair is deprecated

since Android 22 NameValuePair is deprecated.

The documentation sends me an article on openConnection, but this is what I do. So how is it replaced correctly?

I know that I can still use it, and the string should be built just by calculating how to pass data between methods.

+6
source share
5 answers

You can use ContentValues ​​instead of the NameValuePair list.

Creature:

ContentValues values = new ContentValues(); values.put("key1", "value1"); values.put("key2", 123); 

Using:

 for (Map.Entry<String, Object> entry : values.valueSet()) { String key = entry.getKey(); String value = entry.getValue().toString(); } 
+9
source

You can just use

 HashMap<String,Object> 

and pass the hashMap b / w methods.

+5
source

Try this code, I use it in my applications and work

 public String post(JSONObject object) throws Exception { HttpURLConnection conexao = null; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { System.setProperty("http.keepAlive", "false"); } try { URL url = new URL(URL_WEB_SERVICE_POST); conexao = (HttpURLConnection) url.openConnection(); conexao.setConnectTimeout(20000); conexao.setReadTimeout(15000); conexao.setRequestMethod("POST"); conexao.setDoInput(true); conexao.setDoOutput(true); Uri.Builder builder = new Uri.Builder() .appendQueryParameter("parametros", object.toString()); String query = builder.build().getEncodedQuery(); conexao.setFixedLengthStreamingMode(query.getBytes().length); OutputStream os = conexao.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); writer.write(query); writer.flush(); writer.close(); os.close(); conexao.connect(); int responseCode = conexao.getResponseCode(); Log.v(Debug.TAG + " reponseCode", String.valueOf(responseCode)); if(responseCode == HttpURLConnection.HTTP_OK){ StringBuilder sb = new StringBuilder(); try{ BufferedReader br = new BufferedReader(new InputStreamReader(conexao.getInputStream())); String linha; while ((linha = br.readLine())!= null){ sb.append(linha); } return sb.toString(); }catch (Exception e){ e.printStackTrace(); } }else{ if(responseCode == HttpURLConnection.HTTP_CLIENT_TIMEOUT){ throw new Exception("Tempo maximo na comunição atingido: "+ conexao.getErrorStream()); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); throw new Exception("Falha de comunicação, verifique sua conexão com a internet"); }finally { conexao.disconnect(); } return null; } 
+2
source

I recommend using Volley , an HTTP library that simplifies and speeds up networking for Android applications.

0
source

Use Java HttpUrlConnection With Map / Hashmap if you do not want to use the Apache library as a legacy.

 /** * * @param postUrl * @param postParams * @return response in string */ public static String makeServiceCall(final String postUrl, final Map<String, String> postParams) { Log.e("URL#",postUrl); StringBuilder responseBuilder = new StringBuilder(); HttpURLConnection conn = null; try { final URL mUrl = new URL(postUrl); conn = (HttpURLConnection) mUrl.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("charset", "utf-8"); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7"); conn.connect(); conn.setReadTimeout(180000); conn.setConnectTimeout(180000); final OutputStream os = conn.getOutputStream(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); writer.write(getQuery(postParams)); writer.flush(); writer.close(); os.close(); final int responseCode = conn.getResponseCode(); if (responseCode == HttpsURLConnection.HTTP_OK) { String line; BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); while ((line = br.readLine()) != null) { responseBuilder.append(line); } } else { responseBuilder.append(""); } } catch (MalformedURLException e) { e.printStackTrace(); responseBuilder.append(e.getMessage()); return responseBuilder.toString(); } catch (IOException e) { e.printStackTrace(); responseBuilder.append(e.getMessage()); return responseBuilder.toString(); } finally { if (null != conn) { conn.disconnect(); } } System.gc(); return responseBuilder.toString(); } /** * @Param: map , takes in value in key val format */ private static String getQuery(final Map<String, String> mPostItems) throws UnsupportedEncodingException { final StringBuilder result = new StringBuilder(); boolean first = true; final Set<String> mKeys = mPostItems.keySet(); for (String key : mKeys) { if (first) first = false; else result.append("&"); result.append(URLEncoder.encode(key, "UTF-8")); result.append("="); result.append(URLEncoder.encode(mPostItems.get(key), "UTF-8")); Log.e("Key#",key+"#"+mPostItems.get(key)); } return result.toString(); } 
0
source

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


All Articles