http 封装 java_[Java] HttpURLConnection类 封装

1 packagecom.xiwi;2 importjava.io.BufferedReader;3 importjava.io.IOException;4 importjava.io.InputStreamReader;5 importjava.io.OutputStreamWriter;6 importjava.net.HttpURLConnection;7 importjava.net.URL;8 importjava.net.URLEncoder;9 importjava.security.KeyManagementException;10 importjava.security.NoSuchAlgorithmException;11 importjava.security.SecureRandom;12 importjava.util.HashMap;13 importjava.util.Iterator;14 importjava.util.Map;15 importjavax.net.ssl.HostnameVerifier;16 importjavax.net.ssl.HttpsURLConnection;17 importjavax.net.ssl.SSLContext;18 importjavax.net.ssl.SSLSession;19 importjavax.net.ssl.TrustManager;20

21 /**

22 * Xiwi23 * HttpURLConnection类 封装24 *25 */

26 public classHttpUtils {27 private URL httpUrl = null;28 private HttpURLConnection httpConn = null;29

30 private Map httpHeaders = null;31 private String httpCookie = null;32 private String httpResult = null;33

34 //类的初始化 设置对HTTPS请求的支持

35 public HttpUtils ( ) throwsNoSuchAlgorithmException, KeyManagementException {36 SSLContext sslcontext = SSLContext.getInstance("SSL");37 TrustManager[] tm = {newMyX509TrustManager()};38 sslcontext.init(null, tm, newSecureRandom());39 HostnameVerifier ignoreHostnameVerifier = newHostnameVerifier() {40 public booleanverify ( String s, SSLSession sslsession ) {41 System.out.println("WARNING: Hostname is not matched for cert.");42 return true;43 }44 };45 HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);46 HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());47 }48

49

50 public Map getHeaders ( ) { returnhttpHeaders; }51 public void setHeader ( Mapheader ) {52 if ( httpHeaders == null ) httpHeaders = new HashMap();53 Iterator iterHeaders =header.keySet().iterator();54 while( iterHeaders.hasNext() ) {55 String key =iterHeaders.next();56 String value =header.get(key);57 httpHeaders.put(key, value);58 }59 }60

61 public String getCookie ( ) { returnhttpCookie; }62 public voidsetCookie ( String cookie ) {63 Map map = new HashMap();64 map.put("Cookie", cookie);65 setHeader(map);66 }67

68

69 //GET 请求

70 public String sendGet ( String url ) throwsIOException {71

72 httpUrl = newURL(url);73 httpConn =(HttpURLConnection)httpUrl.openConnection();74

75 send("GET", null);76

77 System.out.println("get ok");78 returnhttpResult;79 }80

81 //POST 请求

82 public String sendPost ( String url, Map params ) throwsIOException {83

84 httpUrl = newURL(url);85 httpConn =(HttpURLConnection)httpUrl.openConnection();86

87 send("POST", params);88

89 System.out.println("post ok");90 returnhttpResult;91 }92

93

94 private void send ( String method, Map params ) throwsIOException {95

96 httpConn.setRequestMethod(method);97

98 httpConn.setDoInput(true);99 httpConn.setDoOutput(true);100 httpConn.setConnectTimeout(5000);101

102 //判断 是否有设置 请求头

103 if ( httpHeaders != null) {104 Iterator iter =httpHeaders.keySet().iterator();105 while( iter.hasNext() ) {106 String key =iter.next();107 System.out.print("key: " +key);108 System.out.print("\t");109 System.out.println("value: " +httpHeaders.get(key));110 httpConn.setRequestProperty(key, httpHeaders.get(key));111 }112 }113

114 //判断 是否有设置请求数据

115 if ( params != null) {116 StringBuffer data = newStringBuffer();117 Iterator iter =params.keySet().iterator();118 while( iter.hasNext() ) {119 String key =iter.next();120 String value =params.get(key);121 data.append(URLEncoder.encode(key, "UTF-8"));122 data.append("=").append(123 URLEncoder.encode(value, "UTF-8"));124 data.append("&");125 }126

127 OutputStreamWriter writer = newOutputStreamWriter(httpConn.getOutputStream());128 writer.write(data.substring(0, data.length() - 1));129 writer.flush();130 writer.close();131

132 /*提交数据方式 第二种133 PrintWriter printWriter = new PrintWriter(httpConn.getOutputStream());134 printWriter.write(data.substring(0, data.length() - 1));135 printWriter.flush();136 printWriter.close();137 */

138 /*提交数据方式 第三种139 DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream());140 dos.writeBytes(data.substring(0, data.length() - 1));141 dos.flush();142 dos.close();143 */

144 /*提交数据方式 第四种145 OutputStream outwritestream = httpConn.getOutputStream();146 outwritestream.write(data.substring(0, data.length() - 1).getBytes());147 outwritestream.flush();148 outwritestrean.close();149 */

150 System.out.println("data: " + data.substring(0, data.length() - 1));151 }152

153

154 //System.out.println("返回代码: " + httpConn.getResponseCode());

155 if ( httpConn.getResponseCode() == 200) {156

157 //保存 Cookie

158 httpCookie = httpConn.getHeaderField("Set-Cookie");159 if ( httpCookie == null || httpCookie.equals("") ) {160 httpCookie = httpConn.getHeaderField("Cookie");161 }162

163 //保存 网页请求头,跳过第一个 HTTP/1.1

164 Map mapHeaders = new HashMap();165 Iterator iterHeader =httpConn.getHeaderFields().keySet().iterator();166 int i = 1;167 while( iterHeader.hasNext() ) {168 String key =iterHeader.next();169 if ( i == 1 ) {continue;}170 mapHeaders.put(key, httpConn.getHeaderField(key));171 i++;172 }173 setHeader(mapHeaders);174

175 //获取网页返回值

176 BufferedReader bf = new BufferedReader(newInputStreamReader(httpConn.getInputStream()));177 String line = "";178 httpResult = "";179 while ( (line = bf.readLine()) != null) {180 httpResult += line + "\n";181 }182 bf.close();183 }184 else{185 //请求失败 则 返回网页请求代码

186 httpResult = httpConn.getResponseCode() + "";187 }188

189 httpConn.disconnect();190 }191

192

193

194 publicString test ( String msg ) {195 returnmsg;196 }197

198

199

200

201 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值