java - PHP में डेटा भेजने के लिए मुझे Android में HttpClient के लिए एक वैकल्पिक विकल्प की आवश्यकता है क्योंकि यह अब समर्थित नहीं है




api http-post (6)

वर्तमान में मैं Android app से अपने PHP server डेटा भेजने के लिए HttpClient PHP server , HttpClient का उपयोग कर रहा हूं लेकिन उन सभी विधियों को एपीआई 22 में हटा दिया गया था और एपीआई 23 में हटा दिया गया था, तो इसके वैकल्पिक विकल्प क्या हैं?

मैंने हर जगह खोज की लेकिन मुझे कुछ भी नहीं मिला।


कौन सा ग्राहक सबसे अच्छा है?

अपाचे HTTP क्लाइंट में एक्लेयर और फियोयो पर कम कीड़े हैं। इन रिलीज के लिए यह सबसे अच्छा विकल्प है।

जिंजरब्रेड और बेहतर के लिए, HttpURLConnection सबसे अच्छा विकल्प है। इसका सरल एपीआई और छोटा आकार यह एंड्रॉइड के लिए बहुत अच्छा बनाता है ...

अधिक जानकारी के लिए here संदर्भ (एंड्रॉइड डेवलपर्स ब्लॉग)


आप HttpClient का उपयोग जारी रखने के लिए स्वतंत्र हैं। Google ने अपाचे के घटकों के अपने संस्करण को केवल बहिष्कृत कर दिया। आप इस पोस्ट में वर्णित अपाचे के एचटीपी क्लाइंट के ताजा, शक्तिशाली और गैर बहिष्कृत संस्करण को इंस्टॉल कर सकते हैं: https://.com/a/37623038/1727132


निम्न कोड एक AsyncTask में है:

मेरी पृष्ठभूमि प्रक्रिया में:

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();
        }

संदर्भ: http://www.journaldev.com/7148/java-httpurlconnection-example-to-send-http-getpost-requests


मुझे HttpClent और HttpPost विधि का उपयोग करने में समान समस्याएं थीं क्योंकि मैं अपना कोड बदलना नहीं चाहता था इसलिए मुझे BuildToolsVersion "23.0.1 आरसी 3" से 'आरसी 3' को हटाकर build.gradle (मॉड्यूल) फ़ाइल में वैकल्पिक विकल्प मिला और यह मेरे लिए काम करता है । उम्मीद है की वो मदद करदे।


यदि एपीआई 22 और पुराने के लिए लक्षित है, तो निम्न पंक्ति को build.gradle में जोड़ना चाहिए

dependencies {
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}

यदि एपीआई 23 और उसके बाद के लिए लक्षित है, तो निम्न पंक्ति को build.gradle में जोड़ना चाहिए

dependencies {
    compile group: 'cz.msebera.android' , name: 'httpclient', version: '4.4.1.1'
}

यदि अभी भी एंड्रॉइड मार्शमलो (एसडीके 23) में httpclient लाइब्रेरी का उपयोग करना चाहते हैं, तो आप जोड़ सकते हैं:

useLibrary 'org.apache.http.legacy'

एक वर्कअराउंड के रूप में एंड्रॉइड {} अनुभाग में build.gradle बनाने के लिए। ऐसा लगता है कि Google के कुछ जीएमएस पुस्तकालयों के लिए यह आवश्यक है!


यह वह समाधान है जिसे मैंने समस्या पर लागू किया है कि httpclient एंड्रॉइड 22` के इस संस्करण में बहिष्कृत है

 public static final String USER_AGENT = "Mozilla/5.0";



public static String sendPost(String _url,Map<String,String> parameter)  {
    StringBuilder params=new StringBuilder("");
    String result="";
    try {
    for(String s:parameter.keySet()){
        params.append("&"+s+"=");

            params.append(URLEncoder.encode(parameter.get(s),"UTF-8"));
    }


    String url =_url;
    URL obj = new URL(_url);
    HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

    con.setRequestMethod("POST");
    con.setRequestProperty("User-Agent", USER_AGENT);
    con.setRequestProperty("Accept-Language", "UTF-8");

    con.setDoOutput(true);
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(con.getOutputStream());
    outputStreamWriter.write(params.toString());
    outputStreamWriter.flush();

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'POST' request to URL : " + url);
    System.out.println("Post parameters : " + params);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine + "\n");
    }
    in.close();

        result = response.toString();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (ProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }catch (Exception e) {
        e.printStackTrace();
    }finally {
    return  result;
    }

}




httpclient