Устаревшие HTTP-классы Android lollipop 5.1

Классы org.apache.http и класс AndroidHttpClient устарели в Android 5.1. Эти классы больше не поддерживаются, и вы должны как можно скорее перенести любой код приложения, используя эти API, в классы URLConnection .

https://developer.android.com/about/versions/android-5.1.html#http

Он рекомендовал переключиться на классы URLConnection. Недостаточно документировано, как сделать почтовый вызов из приложения.

В настоящее время я пользуюсь этим

 public void postData() { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php"); try { // Add your data List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair(2); nameValuePairs.add(new BasicNameValuePair("id", "12345")); nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!")); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } } 

Как я могу это сделать с помощью UrlConnections?

Мысль о совместном использовании моего кода с использованием HttpUrlConnection

 public String performPostCall(String requestURL, HashMap<String, String> postDataParams) { URL url; String response = ""; try { url = new URL(requestURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(15000); conn.setConnectTimeout(15000); conn.setRequestMethod("POST"); conn.setDoInput(true); conn.setDoOutput(true); OutputStream os = conn.getOutputStream(); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter(os, "UTF-8")); writer.write(getPostDataString(postDataParams)); writer.flush(); writer.close(); os.close(); int responseCode=conn.getResponseCode(); if (responseCode == HttpsURLConnection.HTTP_OK) { String line; BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream())); while ((line=br.readLine()) != null) { response+=line; } } else { response=""; } } catch (Exception e) { e.printStackTrace(); } return response; } 

……….

 private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException{ StringBuilder result = new StringBuilder(); boolean first = true; for(Map.Entry<String, String> entry : params.entrySet()){ if (first) first = false; else result.append("&"); result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); result.append("="); result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); } return result.toString(); } 

Как насчет использования Volley ? Это похоже на очень хороший выбор по сравнению с URLConnection. И он имеет много преимуществ в очередности запросов.

Используйте этот httpmime-4.1-beta1.jar. Попробуйте этот код: –

 String url = "http://www.yoursite.com/script.php"; HttpClient client = new DefaultHttpClient(); client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); HttpPost postMethod = new HttpPost(url); MultipartEntity entity = new MultipartEntity(); try { entity.addPart("id", new StringBody("123")); entity.addPart("stringdata", new StringBody("AndDev is Cool!")); postMethod.setEntity(entity); HttpResponse response; response = client.execute(postMethod); String result = EntityUtils.toString(response.getEntity()); JSONArray ja = new JSONArray(result); // ITERATE THROUGH AND RETRIEVE CLUB FIELDS int n = ja.length(); for (int i = 0; i < n; i++) { // GET INDIVIDUAL JSON OBJECT FROM JSON ARRAYJSONObject jo = ja.getJSONObject(i); // RETRIEVE EACH JSON OBJECT'S FIELDS String status = jo.getString("status"); // Log.e("status",status); } } catch (Exception e) { e.printStackTrace(); }