说明
进行微信开发,后台程序需要与微信服务器进行交互,通过调用接口来完成服务,阅读微信开发文档,发现接口的调用都是通过http请求进行的,所以必须有个HttpUtil来支撑,这里总结下以javaAPI的方式和以Apach的HttpClient的方式进行HTTP请求
正文
使用java的HttpURLConnection
一个方法实现GET,POST请求
public static String httpRequest(String requestUrl, String requestMethod, String outputStr){
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL(requestUrl);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setUseCaches(false);
httpURLConnection.setRequestMethod(requestMethod);
if("GET".equalsIgnoreCase(requestMethod)){
httpURLConnection.connect();
}
if(null != outputStr){
OutputStream outputStream = httpURLConnection.getOutputStream();
outputStream.write(outputStr.getBytes("utf-8"));
outputStream.close();
}
InputStream inputStream = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while((str = bufferedReader.readLine())!= null){
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
httpURLConnection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}
此方法通过指定URL,请求的方式和参数进行请求,使用流的方式发送参数和读取响应结果。该方法简单,没有设置http的请求属性等,示例代码在微信开发中可以实现功能。
在此方法中 参数outputStr是向微信服务器发送的json格式的数据或者xml结构的数据,友好性不太好,通常应该传递Map<String,Object> params 保存参数
Get请求
private static final String CHAR_SET = "UTF-8";
public static String sendGet(String url, Map<String,Object> params){
StringBuilder responseStr = null;
StringBuilder paramsStr = new StringBuilder();
if(params != null || params.size() > 0){
for(Map.Entry<String,Object> entry : params.entrySet()){
paramsStr.append(entry.getKey())