从 HttpClient 更新到 HttpURLConnection
updating from HttpClient to HttpURLConnection
我一直在开发 android 应用程序,最近使用 HttpClient
获得了所有登录代码。但是,此代码现已弃用并且不再有效。语言摘要建议用 HttpURLConnection
对象替换所有 HttpClient
代码。我不确定该怎么做。如果有人可以帮助我将代码更改为 HttpURLConnection
以提交登录表单并检索信息,将不胜感激。这是我原来的使用功能代码:
String u = params[0];
String p = params[1];
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS,Boolean.TRUE);
//client.setRedirectStrategy(new LaxRedirectStrategy());
HttpPost post = new HttpPost("https://home-access.cfisd.net/HomeAccess/Account/LogOn");
List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("LogOnDetails.Username", u));
list.add(new BasicNameValuePair("LogOnDetails.Password",p));
list.add(new BasicNameValuePair("Database","10"));
HttpResponse response = null;
try{
post.setEntity(new UrlEncodedFormEntity(list));
response = client.execute(post);
}
catch(Exception ex)
{
ex.printStackTrace();
}
您可以获得连接的输出流并将参数查询字符串写入其中。
URL url = new URL("http://yoururl.com");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
os.close();
conn.connect();
.....
private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
{
StringBuilder result = new StringBuilder();
boolean first = true;
for (NameValuePair pair : params)
{
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
}
return result.toString();
}
嘿,兄弟,弄一个像
这样的图书馆
android 的默认设置又旧又笨重
loopjs asynchttpclient or okhttp or Koushs ion
你用 2-3 行代码就完成了很多工作
loopjs 异步 http 示例
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, responseHandler);
//do something with response
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
}
});
我一直在开发 android 应用程序,最近使用 HttpClient
获得了所有登录代码。但是,此代码现已弃用并且不再有效。语言摘要建议用 HttpURLConnection
对象替换所有 HttpClient
代码。我不确定该怎么做。如果有人可以帮助我将代码更改为 HttpURLConnection
以提交登录表单并检索信息,将不胜感激。这是我原来的使用功能代码:
String u = params[0];
String p = params[1];
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS,Boolean.TRUE);
//client.setRedirectStrategy(new LaxRedirectStrategy());
HttpPost post = new HttpPost("https://home-access.cfisd.net/HomeAccess/Account/LogOn");
List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("LogOnDetails.Username", u));
list.add(new BasicNameValuePair("LogOnDetails.Password",p));
list.add(new BasicNameValuePair("Database","10"));
HttpResponse response = null;
try{
post.setEntity(new UrlEncodedFormEntity(list));
response = client.execute(post);
}
catch(Exception ex)
{
ex.printStackTrace();
}
您可以获得连接的输出流并将参数查询字符串写入其中。
URL url = new URL("http://yoururl.com");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("firstParam", paramValue1));
params.add(new BasicNameValuePair("secondParam", paramValue2));
params.add(new BasicNameValuePair("thirdParam", paramValue3));
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
os.close();
conn.connect();
.....
private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
{
StringBuilder result = new StringBuilder();
boolean first = true;
for (NameValuePair pair : params)
{
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
}
return result.toString();
}
嘿,兄弟,弄一个像
这样的图书馆android 的默认设置又旧又笨重
loopjs asynchttpclient or okhttp or Koushs ion
你用 2-3 行代码就完成了很多工作
loopjs 异步 http 示例
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, responseHandler);
//do something with response
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
}
});