Http Request and Http Response in Java
2013-11-07 16:58
471 查看
/article/5775840.html
//http请求类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.Charset; import java.util.Map; import java.util.Vector; /** * HTTP请求 */ public class HttpRequester { /** * 默认响应字符集 */ private String defaultContentEncoding; public HttpRequester() { this.defaultContentEncoding = Charset.defaultCharset().name(); } /** * 发送GET请求 * @param urlString URL地址 * @return 响应对象 * @throws IOException */ public HttpRespons sendGet(String urlString) throws IOException { return this.send(urlString, "GET", null, null); } /** * 发送GET请求 * @param urlString URL地址 * @param params 参数集合 * @return 响应对象 * @throws IOException */ public HttpRespons sendGet(String urlString, Map<String, String> params) throws IOException { return this.send(urlString, "GET", params, null); } /** * 发送GET请求 * @param urlString URL地址 * @param params 参数集合 * @param propertys 请求属性 * @return 响应对象 * @throws IOException */ public HttpRespons sendGet(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException { return this.send(urlString, "GET", params, propertys); } /** * 发送POST请求 * @param urlString URL地址 * @return 响应对象 * @throws IOException */ public HttpRespons sendPost(String urlString) throws IOException { return this.send(urlString, "POST", null, null); } /** * 发送POST请求 * @param urlString URL地址 * @param params 参数集合 * @return 响应对象 * @throws IOException */ public HttpRespons sendPost(String urlString, Map<String, String> params) throws IOException { return this.send(urlString, "POST", params, null); } /** * 发送POST请求 * @param urlString URL地址 * @param params 参数集合 * @param propertys 请求属性 * @return 响应对象 * @throws IOException */ public HttpRespons sendPost(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException { return this.send(urlString, "POST", params, propertys); } /** * 发送HTTP请求 * @param urlString * @return 响应对象 * @throws IOException */ private HttpRespons send(String urlString, String method, Map<String, String> parameters, Map<String, String> propertys) throws IOException { HttpURLConnection urlConnection = null; if (method.equalsIgnoreCase("GET") && parameters != null) { StringBuffer param = new StringBuffer(); int i = 0; for (String key : parameters.keySet()) { if (i == 0) param.append("?"); else param.append("&"); param.append(key).append("=").append(parameters.get(key)); // param.append(parameters.get(key)); i++; } urlString += param; } URL url = new URL(urlString); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod(method); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); if (propertys != null) { for (String key : propertys.keySet()) { urlConnection.addRequestProperty(key, propertys.get(key)); } } if (method.equalsIgnoreCase("POST") && parameters != null) { StringBuffer param = new StringBuffer(); for (String key : parameters.keySet()) { param.append("&"); param.append(key).append("=").append(parameters.get(key)); // param.append(parameters.get(key)); } urlConnection.getOutputStream().write(param.toString().getBytes()); urlConnection.getOutputStream().flush(); urlConnection.getOutputStream().close(); } return this.makeContent(urlString, urlConnection); } /** * 得到响应对象 * @param urlConnection * @return 响应对象 * @throws IOException */ private HttpRespons makeContent(String urlString, HttpURLConnection urlConnection) throws IOException { HttpRespons httpResponser = new HttpRespons(); try { InputStream in = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in)); httpResponser.contentCollection = new Vector<String>(); StringBuffer temp = new StringBuffer(); String line = bufferedReader.readLine(); while (line != null) { httpResponser.contentCollection.add(line); temp.append(line).append("\r\n"); line = bufferedReader.readLine(); } bufferedReader.close(); String ecod = urlConnection.getContentEncoding(); if (ecod == null) ecod = this.defaultContentEncoding; httpResponser.urlString = urlString; httpResponser.defaultPort = urlConnection.getURL().getDefaultPort(); httpResponser.file = urlConnection.getURL().getFile(); httpResponser.host = urlConnection.getURL().getHost(); httpResponser.path = urlConnection.getURL().getPath(); httpResponser.port = urlConnection.getURL().getPort(); httpResponser.protocol = urlConnection.getURL().getProtocol(); httpResponser.query = urlConnection.getURL().getQuery(); httpResponser.ref = urlConnection.getURL().getRef(); httpResponser.userInfo = urlConnection.getURL().getUserInfo(); httpResponser.content = new String(temp.toString().getBytes(), ecod); httpResponser.contentEncoding = ecod; httpResponser.code = urlConnection.getResponseCode(); httpResponser.message = urlConnection.getResponseMessage(); httpResponser.contentType = urlConnection.getContentType(); httpResponser.method = urlConnection.getRequestMethod(); httpResponser.connectTimeout = urlConnection.getConnectTimeout(); httpResponser.readTimeout = urlConnection.getReadTimeout(); return httpResponser; } catch (IOException e) { throw e; } finally { if (urlConnection != null) urlConnection.disconnect(); } } /** * 默认的响应字符集 */ public String getDefaultContentEncoding() { return this.defaultContentEncoding; } /** * 设置默认的响应字符集 */ public void setDefaultContentEncoding(String defaultContentEncoding) { this.defaultContentEncoding = defaultContentEncoding; } }
import java.util.Vector; /** * HTTP响应处理类 */ public class HttpRespons { String urlString; int defaultPort; String file; String host; String path; int port; String protocol; String query; String ref; String userInfo; String contentEncoding; String content; String contentType; public int code; String message; String method; int connectTimeout; int readTimeout; Vector<String> contentCollection; public static final int CODE_OK = 200; public String getContent() { return content; } public String getContentType() { return contentType; } public int getCode() { return code; } public String getMessage() { return message; } public Vector<String> getContentCollection() { return contentCollection; } public String getContentEncoding() { return contentEncoding; } public String getMethod() { return method; } public int getConnectTimeout() { return connectTimeout; } public int getReadTimeout() { return readTimeout; } public String getUrlString() { return urlString; } public int getDefaultPort() { return defaultPort; } public String getFile() { return file; } public String getHost() { return host; } public String getPath() { return path; } public int getPort() { return port; } public String getProtocol() { return protocol; } public String getQuery() { return query; } public String getRef() { return ref; } public String getUserInfo() { return userInfo; } }
//测试客户端 import java.io.IOException; public class TestHttp { public static void main(String[] args) throws IOException { HttpRequester request = new HttpRequester(); HttpRespons hr = request.sendGet("http://www.12306.cn/mormhweb/"); String rsContent = hr.getContent(); System.out.println(rsContent); } }
相关文章推荐
- How to use HttpWebRequest and HttpWebResponse in .NET
- 转:Working with HttpWebRequest and HttpWebResponse in ASP.NET
- HTTP Response Caching for Java and Android
- How to retreive raw post data from HttpServletRequest in java
- send a client certificate by using the HttpWebRequest and HttpWebResponse classes
- How to disable 'withcredentials' in HTTP header with node.js and Request package?
- java web给手机端写接口HttpServletRequest ,HttpServletResponse
- Log message Request and Response in ASP.NET WebAPI
- javaweb之HttpRequest与HttpResponse
- How to retreive raw post data from HttpServletRequest in java
- How to retreive raw post data from HttpServletRequest in java
- javaWeb-Servlet的继承体系和HttpServletRequest中常用的方法+HttpServletResponse对中文乱码的处理
- JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(下)(各种乱码、验证码、重定向和转发)
- java web给手机端写接口HttpServletRequest ,HttpServletResponse
- HTTP Response Splitting and XSS vulnerabilities in IBM Lotus Domino
- How to retreive raw post data from HttpServletRequest in java
- REST in WCF: Varying response content type based on HTTP Request Headers
- 基于 Django1.10 文档的深入学习(14)—— Request and response objects 之 HttpResponse objects
- HTTP Request and Response
- JavaWeb-HttpServletResponse、HttpServletRequest