使用Http访问网络(使用Apache HttpClient)
2013-03-01 17:15
411 查看
使用Apache HttpClient访问网络
HttpGet调用方法:
SyncHttp syncHttp = new SyncHttp();
String urlStr = "http://10.0.2.2:8080/web/getComments";
String params = "cid="+ pNewsid + "&startnid=0&count=10";
String retStr = syncHttp.httpGet(urlStr, params); //以Get方式请求,并获得返回结果
HttpPost调用方法:
String url = "http://10.0.2.2:8080/web/postComment";
List<Parameter> params = new ArrayList<Parameter>();
params.add(new Parameter("nid", mCategoryNids.get(mCurrentPosition)+""));
params.add(new Parameter("region", "安徽"));
params.add(new Parameter("content", mNewsReplyEditText.getText().toString()));
SyncHttp http = new SyncHttp();
String retStr = http.httpPost(url, params);
package com.szy.news.service; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.json.JSONObject; import com.szy.news.model.Parameter; /** *以同步方式发送Http请求 */ public class SyncHttp { /** * 通过GET方式发送请求 * @param url URL地址 * @param params 参数 * @return * @throws Exception */ public String httpGet(String url, String params) throws Exception { String response = null; //返回信息 //拼接请求URL if (null!=params&&!params.equals("")) { url += "?" + params; } int timeoutConnection = 3000; int timeoutSocket = 5000; HttpParams httpParameters = new BasicHttpParams(); // Set the timeout in milliseconds until a connection is established. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例 // HttpClient httpClient = new DefaultHttpClient(); HttpClient httpClient = new DefaultHttpClient(httpParameters); // 创建GET方法的实例 HttpGet httpGet = new HttpGet(url); try { HttpResponse httpResponse = httpClient.execute(httpGet); int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) //SC_OK = 200 { // 获得返回结果 response = EntityUtils.toString(httpResponse.getEntity()); JSONObject jsonObject = new JSONObject(response); } else { response = "返回码:"+statusCode; } } catch (Exception e) { throw new Exception(e); } return response; } /** * 通过POST方式发送请求 * @param url URL地址 * @param params 参数 * @return * @throws Exception */ public String httpPost(String url, List<Parameter> params) throws Exception { String response = null; int timeoutConnection = 3000; int timeoutSocket = 5000; // Set the timeout in milliseconds until a connection is established. HttpParams httpParameters = new BasicHttpParams(); // Set the default socket timeout (SO_TIMEOUT).in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例 //HttpClient httpClient = new DefaultHttpClient(); HttpClient httpClient = new DefaultHttpClient(httpParameters); HttpPost httpPost = new HttpPost(url); if (params.size()>=0) { //设置httpPost请求参数 httpPost.setEntity(new UrlEncodedFormEntity(buildNameValuePair(params),HTTP.UTF_8)); } //使用execute方法发送HTTP Post请求,并返回HttpResponse对象 HttpResponse httpResponse = httpClient.execute(httpPost); int statusCode = httpResponse.getStatusLine().getStatusCode(); if(statusCode==HttpStatus.SC_OK) { //获得返回结果 response = EntityUtils.toString(httpResponse.getEntity()); } else { response = "返回码:"+statusCode; } return response; } /** * 把Parameter类型集合转换成NameValuePair类型集合 * @param params 参数集合 * @return */ private List<BasicNameValuePair> buildNameValuePair(List<Parameter> params) { List<BasicNameValuePair> result = new ArrayList<BasicNameValuePair>(); for (Parameter param : params) { BasicNameValuePair pair = new BasicNameValuePair(param.getName(), param.getValue()); result.add(pair); } return result; } }
HttpGet调用方法:
SyncHttp syncHttp = new SyncHttp();
String urlStr = "http://10.0.2.2:8080/web/getComments";
String params = "cid="+ pNewsid + "&startnid=0&count=10";
String retStr = syncHttp.httpGet(urlStr, params); //以Get方式请求,并获得返回结果
HttpPost调用方法:
String url = "http://10.0.2.2:8080/web/postComment";
List<Parameter> params = new ArrayList<Parameter>();
params.add(new Parameter("nid", mCategoryNids.get(mCurrentPosition)+""));
params.add(new Parameter("region", "安徽"));
params.add(new Parameter("content", mNewsReplyEditText.getText().toString()));
SyncHttp http = new SyncHttp();
String retStr = http.httpPost(url, params);
相关文章推荐
- 2.使用org.apache.http.client.HttpClient访问网络
- (Apache)使用HttpClient方式访问HTTP
- Android中使用HttpURLConnection和HttpClient实现GET和POST请求访问网络
- 基于Apache的HttpClient进行HTTP网络访问
- 使用Apache HttpClient访问网络(实现手机端注册,服务器返回信息)
- Android之网络访问(一)android 中对apache httpclient及httpurlconnection的选择
- Android访问网络,使用HttpURLConnection还是HttpClient?
- Android访问网络,使用HttpURLConnection还是HttpClient?
- 使用HttpURLConnection访问网络
- Android访问网络,使用HttpURLConnection还是HttpClient?
- Android使用HTTP协议访问网络——HttpClient
- Android访问网络,使用HttpURLConnection还是HttpClient?
- Android学习指南之三十:使用URLConnection和HttpClient访问网络的方法
- 使用 firefox 的开发者工具与 DIG 命令行工具,来分析访问站点时的网络连接与 HTTP 请求和响应
- 使用apache的httpcomponents中的httpclient 4.5对https进行访问
- Android的网络应用-使用Apache HttpClient
- Android网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合
- Android开发-基础网络组件(2)使用ApacheHttpClient登陆-AndroidStudio
- Apache HttpClient 访问http连接
- Linux下SVN服务器同时支持Apache的http和https及svnserve独立服务器三种模式且使用相同的访问权限账号