httpclient的get及post
httpclient的get及post
帅的不像男的 发表于2年前
httpclient的get及post
  • 发表于 2年前
  • 阅读 96
  • 收藏 5
  • 点赞 2
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 项目之前用的java原生的http请求方式,为了便于扩展,修改为httpclient

需要的包有

httpclient-4.2.5.jar
httpcore-4.2.4.jar

创建一个TestClient类(测试)

有get和post方法

public class TestClient {
	
	 HttpClient httpclient=new DefaultHttpClient();
	    /**
	     * 发送 post请求访问本地应用并根据传递参数不同返回不同结果
	     */
	    public String post(String url,String respEncoding) {
	        return post(url,"UTF-8",respEncoding,new String());
	    }

	    /**
	     * 发送 post请求访问本地应用并根据传递参数不同返回不同结果
	     */
	    public String post(String url,String reqEncoding,String respEncoding,String param) {
	        String resStr = "";
	        // 创建httppost
	        HttpPost httppost = new HttpPost(url);
	    	// 请求超时
	   	    httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
	        // 读取超时
	   	    httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
	        
	        // 创建参数队列
	        String[] a= param.split("\\&");
	        List list =new ArrayList();
	        for(int i=0;i<a.length;i++){
	        	String[] b = a[i].split("\\=");
	        	list.add(new BasicNameValuePair(b[0], b[1]));//参数
	        }
	        UrlEncodedFormEntity uefEntity;
	        try {
	            uefEntity = new UrlEncodedFormEntity(list, reqEncoding);
	            httppost.setEntity(uefEntity);
	            HttpResponse response;
	            response = httpclient.execute(httppost);
	            HttpEntity entity = response.getEntity();
	            if (entity != null && response.getStatusLine().getStatusCode()==HttpStatus.SC_OK) {
	                resStr = EntityUtils.toString(entity,respEncoding);
	            }
	        } catch (ClientProtocolException e) {
	            e.printStackTrace();
	        } catch (UnsupportedEncodingException e1) {
	            e1.printStackTrace();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } finally {
	            // 关闭连接,释放资源
                //httpclient.getConnectionManager().shutdown();
	        }
	        return resStr;
	    }

	    /**
	     * 发送 get请求
	     */
	    public String get(String url) {
	        //httpclient = new DefaultHttpClient();
	        String resStr = "";
	        try {
	            // 创建httpget.
	            HttpGet httpget = new HttpGet(url);
	            // 请求超时
		   	    httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
		        // 读取超时
		   	    httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
	            // 执行get请求.
	            HttpResponse response = httpclient.execute(httpget);
	            // 获取响应实体
	            HttpEntity entity = response.getEntity();
	            // 打印响应状态
	            System.out.println(response.getStatusLine());
	            if (entity != null) {
	                // 打印响应内容长度
//	                System.out.println("Response content length: "
//	                        + entity.getContentLength());
	                // 打印响应内容
//	                System.out.println("Response content: "
//	                        + EntityUtils.toString(entity));
	                resStr=EntityUtils.toString(entity);
	            }
	        } catch (ClientProtocolException e) {
	            e.printStackTrace();
	        } catch (ParseException e) {
	            e.printStackTrace();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } finally {
	            // 关闭连接,释放资源
	            httpclient.getConnectionManager().shutdown();
	        }
	        return resStr;
	    }
}

创建一个MainClass类,调用httpclient类的方法

public class MainClass {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 TestClient http = new TestClient();//构造参数
		 List list =new ArrayList();
	     list.add(new BasicNameValuePair("username", "hty1"));//参数
        
        System.out.println(http.post("http://localhost:8085/checkIntegralUsername.shtml", "UTF-8", "UTF-8", "username=hty1&mid=123456"));
        System.out.println(http.get("http://localhost:8085/checkIntegralUsername.shtml"));//访问的页面
	}

}

之前的使用java原生的http请求代码

public class TestHttp {
	static Random random;
	private static String table = "0123456789";

	public static void main(String[] args) {

	}


	/**
	 * 向指定URL发送GET方法的请求
	 * 
	 * @param url
	 *            发送请求的URL
	 * @param param
	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
	 * @return URL 所代表远程资源的响应结果
	 */
	public static String sendGet(String url, String param) {
		String result = "";
		BufferedReader in = null;
		String urlNameString="";
		
		try {
			urlNameString = url + "?" + param;
			System.out.println(urlNameString+"---发送GET请求"+new Date());
			URL realUrl = new URL(urlNameString);
			// 打开和URL之间的连接
			URLConnection connection = realUrl.openConnection();
			// 设置通用的请求属性
			connection.setRequestProperty("accept", "*/*");
			connection.setRequestProperty("connection", "Keep-Alive");
			connection
					.setRequestProperty("User-Agent",
							"Dalvik/1.6.0 (Linux; U; Android 4.2.2; GT-I9152 Build/JDQ39)");
			connection.setReadTimeout(10000);
			connection.setConnectTimeout(10000);
			// 建立实际的连接
			connection.connect();
			// 获取所有响应头字段
			Map<String, List<String>> map = connection.getHeaderFields();
			// 遍历所有的响应头字段
			for (String key : map.keySet()) {
				System.out.println(key + "--->" + map.get(key));
			}
			// 定义 BufferedReader输入流来读取URL的响应
			in = new BufferedReader(new InputStreamReader(connection
					.getInputStream()));
			String line;
			while ((line = in.readLine()) != null) {
				result += line;
			}
		} catch (Exception e) {
			System.out.println(urlNameString+"---发送GET请求出现异常!---"+new Date() + e);
			try {
				if (in != null) {
					in.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		// 使用finally块来关闭输入流
		finally {
			try {
				if (in != null) {
					in.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
//		System.out.println("---" + result); 
		return result;
	}

	/**
	 * 向指定 URL 发送POST方法的请求
	 * 
	 * @param url
	 *            发送请求的 URL
	 * @param param
	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
	 * @return 所代表远程资源的响应结果
	 */
	public static String sendPost(String url, String param) {
		PrintWriter out = null;
		BufferedReader in = null;
		String result = "";
		try {
			URL realUrl = new URL(url);
			// 打开和URL之间的连接
			URLConnection conn = realUrl.openConnection();
			// 设置通用的请求属性
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setRequestProperty("user-agent",
					"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
			// 发送POST请求必须设置如下两行
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setReadTimeout(10000);
			conn.setConnectTimeout(10000);
			// 获取URLConnection对象对应的输出流
			OutputStreamWriter osw = new OutputStreamWriter(conn
			    	 .getOutputStream(),"UTF-8");
			out = new PrintWriter(osw);
			// 发送请求参数
			out.print(param);
			// flush输出流的缓冲
			out.flush();
			// 定义BufferedReader输入流来读取URL的响应
			in = new BufferedReader(new InputStreamReader(
					conn.getInputStream(), "UTF-8"));
			String line;
			while ((line = in.readLine()) != null) {
				result += line;
			}
		} catch (Exception e) {
			System.out.println("发送 POST 请求出现异常!" + e);
			e.printStackTrace();
			try {
				if (in != null) {
					in.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		// 使用finally块来关闭输出流、输入流
		finally {
			try {
				if (out != null) {
					out.close();
				}
				if (in != null) {
					in.close();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
//		System.out.println(result);
		return result;
	}

	private static String recordkey() {
		String str = "150000911101112013082008-01-25 20:23:30testkey";
		return MD5(str);
	}

	/**
	 * <Field128>MAC算法
	 * 
	 * @param sourceStr
	 * @return
	 */
	private static String MD5(String sourceStr) {
		String result = "";
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(sourceStr.getBytes());
			byte b[] = md.digest();
			int i;
			StringBuffer buf = new StringBuffer("");
			for (int offset = 0; offset < b.length; offset++) {
				i = b[offset];
				if (i < 0)
					i += 256;
				if (i < 16)
					buf.append("0");
				buf.append(Integer.toHexString(i));
			}
			result = buf.toString().substring(0, 16);
		} catch (NoSuchAlgorithmException e) {
			System.out.println(e);
		}
		return result;
	}
}


共有 人打赏支持
粉丝 10
博文 74
码字总数 43864
×
帅的不像男的
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: