android httpclient基本用法
16lz
2021-01-24
android httpclient常用的post get delete put 方法简单使用
传值方式:文本键值对格式 和 json格式
/** * 通过Put方式发送请求 更新采集器信息 * @param url URL地址 * @param params 参数 * @return * @throws Exception */public String httpPut(String json,String url, List params, String tokenAuth,int type) throws Exception{String response = null;int timeoutConnection = YunTongXun.httpclienttime; int timeoutSocket = YunTongXun.httpclienttime; HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a connection is established. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);// Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例HttpClient httpClient = new DefaultHttpClient(httpParameters); HttpPut httpPost = new HttpPut(url);if (params.size()>=0){ //设置httpPost请求参数if(type==2){ String jsstr = "[{"; for (Parameter param : params){ jsstr += "\"" + param.getName() +"\":" + param.getValue() + ",";} jsstr = jsstr.substring(0,jsstr.length()-1); jsstr +="}]"; if(json!=null) { jsstr = json; } System.out.println(jsstr);StringEntity s = new StringEntity(jsstr ,"utf-8"); s.setContentEncoding("UTF-8"); s.setContentType("text/json"); s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); httpPost.setEntity(s); httpPost.setHeader("Accept", "application/json");httpPost.setHeader("Content-Type","application/json;charset=UTF-8"); }else if(type==3){boolean isLock = false,hasMutiDistance = false;String blowerIds = "";String distances = "";for (Parameter param : params){ if(param.getName().equals("distance")) { if(param.getValue().split(",").length>1) { distances = param.getValue(); hasMutiDistance = true; } } else if(param.getName().equals("lock")) { if(param.getValue().length()>2) { blowerIds = param.getValue(); isLock = true; } } else if(param.getName().equals("unlock")) { if(param.getValue().length()>2) { blowerIds = param.getValue(); isLock = false; } } }if(!hasMutiDistance){String jsstr = "[{"; for (Parameter param : params){ jsstr += "\"" + param.getName() +"\":" + param.getValue() + ",";} jsstr = jsstr.substring(0,jsstr.length()-1); jsstr +="}]";StringEntity s = new StringEntity(jsstr ,"utf-8"); s.setContentEncoding("UTF-8"); s.setContentType("text/json"); s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); httpPost.setEntity(s);}else{String jsstr = "[";int i =0;blowerIds = blowerIds.replace("[", "").replace("]", ""); for(String dis : distances.split(",")) { if(isLock) { jsstr += "{\"distance\":" + dis + ",\"lock\":[" + blowerIds.split(",")[i] + "],\"unlock\":[]},"; } else { jsstr += "{\"distance\":" + dis + ",\"unlock\":[" + blowerIds.split(",")[i] + "],\"lock\":[]},"; } i++; } jsstr = jsstr.substring(0,jsstr.length()-1); jsstr +="]"; System.out.println(jsstr);StringEntity s = new StringEntity(jsstr ,"utf-8"); s.setContentEncoding("UTF-8"); s.setContentType("text/json"); s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); httpPost.setEntity(s);}httpPost.setHeader("Accept", "application/json");httpPost.setHeader("Content-Type","application/json;charset=UTF-8");}else if(type ==1){httpPost.setEntity(new UrlEncodedFormEntity(buildNameValuePair(params),HTTP.UTF_8));}}if(tokenAuth != null)httpPost.setHeader("Authorization", tokenAuth);//使用execute方法发送HTTP Post请求,并返回HttpResponse对象HttpResponse httpResponse = httpClient.execute(httpPost);int statusCode = httpResponse.getStatusLine().getStatusCode();if(statusCode==HttpStatus.SC_CREATED || statusCode == HttpStatus.SC_OK){//获得返回结果 response = EntityUtils.toString(httpResponse.getEntity(),"utf-8"); if(response==null || response.length()<2) { System.out.println("{status_code:"+statusCode+"}"); return "{status_code:"+statusCode+"}"; }}else{ response = EntityUtils.toString(httpResponse.getEntity(),"utf-8");System.out.println(response);System.out.println("{status_code:"+statusCode+"}");return "{status_code:"+statusCode+"}";}return response;}
/** * http通信类 * @author sm * */@SuppressWarnings("deprecation")public class SyncHttp{/*** 通过GET方式发送请求* @param url URL地址* @param params 参数* @return * @throws Exception*/public String httpGet(String url, String params) throws Exception{String response = null; //返回信息//拼接请求URLif (null!=params&&!params.equals("")){url += "?" + params;}int timeoutConnection = YunTongXun.httpclienttime; int timeoutSocket = YunTongXun.httpclienttime;HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a connection is established. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);// Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例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(),"utf-8");}else{return "{status_code:"+statusCode+"}";}} catch (Exception e){return null;} return response;}/*** 通过POST方式发送请求 获取短信* @param url URL地址* @param params 参数* @return* @throws Exception*/public String httpPost(String url, List params) throws Exception{String response = null;int timeoutConnection = YunTongXun.httpclienttime; int timeoutSocket = YunTongXun.httpclienttime; HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a connection is established. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);// Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例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_CREATED || statusCode == HttpStatus.SC_OK){//获得返回结果 response = EntityUtils.toString(httpResponse.getEntity(),"utf-8");}else{ return "{status_code:"+statusCode+"}";}return response;}/*** 把Parameter类型集合转换成NameValuePair类型集合* @param params 参数集合* @return*/private List buildNameValuePair(List params){List result = new ArrayList();for (Parameter param : params){BasicNameValuePair pair = new BasicNameValuePair(param.getName(), param.getValue());result.add(pair);}return result;}/*** 通过delete方式发送请求* @param url URL地址* @param params 参数* @return * @throws Exception*/public String httpdelete(String url, String params) throws Exception{String response = null; //返回信息//拼接请求URLif (null!=params&&!params.equals("")){url += "?" + params;}int timeoutConnection = YunTongXun.httpclienttime; int timeoutSocket = YunTongXun.httpclienttime; HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a connection is established. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);// Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例HttpClient httpClient = new DefaultHttpClient(httpParameters); // 创建GET方法的实例HttpDelete httpdelete = new HttpDelete(url);try{HttpResponse httpResponse = httpClient.execute(httpdelete);int statusCode = httpResponse.getStatusLine().getStatusCode();if (statusCode == HttpStatus.SC_OK) //SC_OK = 200{// 获得返回结果response = EntityUtils.toString(httpResponse.getEntity(),"utf-8");}else{return "{status_code:"+statusCode+"}";}} catch (Exception e){return null;} return response;}/*** 通过put方式发送请求,修改用户信息* @param url URL地址* @param params 参数* @return * @throws Exception*/public String httpPut(String url, HashMap params,String tokenAuth) throws Exception{String response = null; //返回信息//拼接请求URLint timeoutConnection = YunTongXun.httpclienttime; int timeoutSocket = YunTongXun.httpclienttime; HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a connection is established. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);// Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例HttpClient httpClient = new DefaultHttpClient(httpParameters);// 创建GET方法的实例HttpPut httpPut = new HttpPut(url);httpPut.setHeader("Authorization", tokenAuth);if (params.size()>=0){MultipartEntity reqEntity = new MultipartEntity();if(params.keySet().contains("password")){reqEntity.addPart("password", new StringBody(params.get("password"),Charset.forName("UTF-8")));reqEntity.addPart("username", new StringBody(params.get("username"),Charset.forName("UTF-8")));reqEntity.addPart("new_password", new StringBody(params.get("new_password"),Charset.forName("UTF-8")));}else{ // reqEntity.addPart("username", new StringBody(params.get("username"),Charset.forName("UTF-8")));if(params.keySet().contains("nickname")){ reqEntity.addPart("nickname", new StringBody(params.get("nickname"),Charset.forName("UTF-8")));}if(params.keySet().contains("avatar")){reqEntity.addPart("avatar", new FileBody(new File(params.get("avatar"))));}}//设置httpPost请求参数 httpPut.setEntity(reqEntity);}try{HttpResponse httpResponse = httpClient.execute(httpPut);int statusCode = httpResponse.getStatusLine().getStatusCode();if (statusCode == HttpStatus.SC_OK) //SC_OK = 200{// 获得返回结果response = EntityUtils.toString(httpResponse.getEntity(),"utf-8");}else{return "{status_code:"+statusCode+"}";}} catch (Exception e){return null;} return response;}/*** 通过put方式发送请求,修改用户密码信息* @param url URL地址* @param params 参数* @return * @throws Exception*/public String httpPutSetNewPwd(String url, HashMap params) throws Exception{String response = null; //返回信息//拼接请求URLint timeoutConnection = YunTongXun.httpclienttime; int timeoutSocket = YunTongXun.httpclienttime; HttpParams httpParameters = new BasicHttpParams();// Set the timeout in milliseconds until a connection is established. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);// Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); // 构造HttpClient的实例HttpClient httpClient = new DefaultHttpClient(httpParameters);// 创建GET方法的实例HttpPut httpPut = new HttpPut(url);if (params.size()>=0){MultipartEntity reqEntity = new MultipartEntity();reqEntity.addPart("code", new StringBody(params.get("code"),Charset.forName("UTF-8")));reqEntity.addPart("username", new StringBody(params.get("username"),Charset.forName("UTF-8")));reqEntity.addPart("new_password", new StringBody(params.get("new_password"),Charset.forName("UTF-8")));//设置httpPost请求参数 httpPut.setEntity(reqEntity);}try{HttpResponse httpResponse = httpClient.execute(httpPut);int statusCode = httpResponse.getStatusLine().getStatusCode();if (statusCode == HttpStatus.SC_OK) //SC_OK = 200{// 获得返回结果response = EntityUtils.toString(httpResponse.getEntity(),"utf-8");}else{return "{status_code:"+statusCode+"}";}} catch (Exception e){return null;} return response;}}
更多相关文章
- Android主题更换换肤
- android解析xml文件的方式(其一)
- Android(安卓)Fragment 真正的完全解析(下)
- 如何用Android(安卓)Studio打多包名APK
- android进行异步更新UI的四种方式
- android 本地数据库
- Android(安卓)版本兼容 — Android(安卓)6.0 和 7.0后获取Mac地
- Android客户端post请求服务器端实例
- Android(安卓)WebView 开发详解(二)