android httpclient基本用法

本文提供了Android中使用HttpClient进行HTTP请求的方法示例,包括GET、POST、PUT和DELETE等操作,并介绍了如何处理不同类型的请求参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android  httpclient常用的post get delete put 方法简单使用

传值方式:文本键值对格式 和 json格式


/**
	 * 通过Put方式发送请求 更新采集器信息 
	 * @param url URL地址
	 * @param params 参数
	 * @return 
	 * @throws Exception
	 */
	public String httpPut(String json,String url,  List<Parameter> 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; //返回信息
//拼接请求URL
if (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<Parameter> 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<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;
}



/**
* 通过delete方式发送请求
* @param url URL地址
* @param params 参数
* @return 
* @throws Exception
*/
public String httpdelete(String url, String params) throws Exception
{
String response = null; //返回信息
//拼接请求URL
if (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<String, String> params,String tokenAuth) throws Exception
{
String response = null; //返回信息
//拼接请求URL
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方法的实例
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<String, String> params) throws Exception
{
String response = null; //返回信息
//拼接请求URL
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方法的实例
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;
}

}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值