Android 如果我使用';org.apache.http.legacy';并继续使用不推荐的东西,如NameValuePair和其他?
我正在尝试将支付网关集成到我的android应用程序中。为此,我下载了他们的集成工具包并使用了它。但是,目前可用的工具包导入org.apache.http,并使用其功能,如httppost、namevaluepair等。因此,我的问题是,如前所述,在gradle中进行下面提到的更改并继续使用不推荐使用的库可以吗Android 如果我使用';org.apache.http.legacy';并继续使用不推荐的东西,如NameValuePair和其他?,android,apache,deprecated,ccavenue,basicnamevaluepair,Android,Apache,Deprecated,Ccavenue,Basicnamevaluepair,我正在尝试将支付网关集成到我的android应用程序中。为此,我下载了他们的集成工具包并使用了它。但是,目前可用的工具包导入org.apache.http,并使用其功能,如httppost、namevaluepair等。因此,我的问题是,如前所述,在gradle中进行下面提到的更改并继续使用不推荐使用的库可以吗 android { useLibrary 'org.apache.http.legacy' } 将此代码段放在ServiceHandler类中,您不需要使用legacy。您可以
android {
useLibrary 'org.apache.http.legacy'
}
将此代码段放在ServiceHandler类中,您不需要使用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();
}
/**
*
*@param postrl
*@param后参数
*@返回字符串形式的响应
*/
公共静态字符串makeServiceCall(最终字符串姿势、最终映射后参数){
Log.e(“URL#”,postrl);
StringBuilder responseBuilder=新建StringBuilder();
HttpURLConnection conn=null;
试一试{
最终URL mUrl=新URL(姿势);
conn=(HttpURLConnection)mUrl.openConnection();
conn.setDoInput(真);
连接设置输出(真);
conn.setRequestMethod(“POST”);
conn.setRequestProperty(“内容类型”、“应用程序/x-www-form-urlencoded”);
conn.setRequestProperty(“字符集”、“utf-8”);
conn.setRequestProperty(“用户代理”、“Mozilla/5.0(Linux;U;Android-4.0.3;en-us;Galaxy Nexus Build/IML74K)AppleWebKit/535.7(KHTML,如Gecko)CrMo/16.0.912.75 Mobile Safari/535.7”);
连接();
连接设置读取超时(180000);
连接设置连接超时(180000);
最终输出流os=conn.getOutputStream();
BufferedWriter writer=新的BufferedWriter(新的OutputStreamWriter(os,“UTF-8”));
write(getQuery(postParams));
writer.flush();
writer.close();
os.close();
final int responseCode=conn.getResponseCode();
if(responseCode==HttpsURLConnection.HTTP\u确定){
弦线;
BufferedReader br=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
而((line=br.readLine())!=null){
responseBuilder.append(行);
}
}否则{
responseBuilder.append(“”);
}
}捕获(格式错误){
e、 printStackTrace();
append(例如getMessage());
返回responseBuilder.toString();
}捕获(IOE异常){
e、 printStackTrace();
append(例如getMessage());
返回responseBuilder.toString();
}最后{
如果(空!=conn){
连接断开();
}
}
gc();
返回responseBuilder.toString();
}
/**
*@Param:map,以键val格式获取值
*/
私有静态字符串getQuery(最终映射mPostItems)引发UnsupportedEncodingException{
最终StringBuilder结果=新建StringBuilder();
布尔值优先=真;
最终设置mKeys=mPostItems.keySet();
用于(字符串键:mKeys){
如果(第一)
第一个=假;
其他的
结果。追加(&);
result.append(URLEncoder.encode(键,“UTF-8”);
结果。追加(“=”);
result.append(URLEncoder.encode(mPostItems.get(key),“UTF-8”);
Log.e(“Key#”,Key+“#”+mPostItems.get(Key));
}
返回result.toString();
}
如果他们的工具包正在使用它,那么您就没有选择可以使用legacy。为什么OP“将此代码段放入ServiceHandler”?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。