Ничего, если я использую «org.apache.http.legacy» и продолжу использовать устаревшие вещи, такие как NameValuePair и другие?

Я пытаюсь интегрировать платежный шлюз CCAvenue в свое приложение для Android. Для этого я скачал их комплект интеграции и использовал его. Но доступный в настоящее время комплект импортирует org.apache.http и использует его функции, такие как httppost, namevaluepair и т. д. Итак, мой вопрос, как уже упоминалось, здесь, можно ли вносить указанные ниже изменения в градиент и продолжать использовать устаревшие библиотеки?

android {
    useLibrary 'org.apache.http.legacy'
}

person Sumit Shetty    schedule 23.01.2017    source источник
comment
если их комплект использует это, то у вас нет выбора, поэтому вы можете использовать устаревшие.   -  person Pushpendra    schedule 23.01.2017


Ответы (1)


Поместите этот фрагмент кода в класс ServiceHandler, вам не нужно использовать устаревшие версии. Вы можете изменить их код в соответствии с вашими требованиями, это всего лишь образцы.

/**
 *
 * @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();
}
person Pradyumna Sahoo    schedule 25.01.2017
comment
Почему OP должен поместить этот фрагмент кода в ServiceHandler? Хороший ответ всегда будет содержать объяснение того, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO. - person B001ᛦ; 25.01.2017