java调用http请求

来源:互联网 发布:蓝胖升级数据 编辑:程序博客网 时间:2024/05/22 14:21
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.Iterator;import java.util.Map;import org.springframework.util.StringUtils;public class AccessUrlUtil {/** * 访问url *  * @param url * @param method * @param map * @return */public static Object accessUrl(String url, String method, Map<String, String> map) throws Exception {method = (null == method || "".equals(method)) ? "GET" : method;StringBuffer params = new StringBuffer("");if (null != map && !map.isEmpty()) {Iterator<String> keys = map.keySet().iterator();while (keys.hasNext()) {String key = keys.next();params.append(encode(key, map.get(key))).append('&');}}URL localURL = new URL(url);URLConnection connection = localURL.openConnection();HttpURLConnection httpURLConnection = (HttpURLConnection) connection;httpURLConnection.setDoOutput(true);httpURLConnection.setRequestMethod(method);httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");httpURLConnection.setRequestProperty("Content-Length", String.valueOf(params.length()));OutputStream outputStream = null;OutputStreamWriter outputStreamWriter = null;InputStream inputStream = null;InputStreamReader inputStreamReader = null;BufferedReader reader = null;StringBuffer resultBuffer = new StringBuffer("");String tempLine = null;try {outputStream = httpURLConnection.getOutputStream();outputStreamWriter = new OutputStreamWriter(outputStream);outputStreamWriter.write(params.toString());outputStreamWriter.flush();if (httpURLConnection.getResponseCode() >= 300) {throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());}inputStream = httpURLConnection.getInputStream();inputStreamReader = new InputStreamReader(inputStream);reader = new BufferedReader(inputStreamReader);while ((tempLine = reader.readLine()) != null) {resultBuffer.append(tempLine);}} finally {if (outputStreamWriter != null) {outputStreamWriter.close();}if (outputStream != null) {outputStream.close();}if (reader != null) {reader.close();}if (inputStreamReader != null) {inputStreamReader.close();}if (inputStream != null) {inputStream.close();}}return resultBuffer.toString();}private static String encode(String key, String value) throws UnsupportedEncodingException {return URLEncoder.encode(key, "UTF-8") + '=' + URLEncoder.encode(value, "UTF-8");}}

0 0