package net.dreamlu.api.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.Map; import java.util.Map.Entry; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.commons.lang.StringUtils; public class HttpKit { private static final String DEFAULT_CHARSET = "UTF-8"; // 默认字符集 private static final String _GET = "GET"; // GET private static final String _POST = "POST";// POST /** * 初始化http请求参数 * @param url * @param method * @param headers * @return * @throws IOException */ private static HttpURLConnection initHttp (String url, String method, Map<String, String> headers) throws IOException { URL _url = new URL(url); HttpURLConnection http = (HttpURLConnection) _url.openConnection(); // 连接超时 http.setConnectTimeout(25000); // 读取超时 --服务器响应比较慢,增大时间 http.setReadTimeout(25000); http.setRequestMethod(method); http.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); http.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36"); if (null != headers && !headers.isEmpty()) { for (Entry<String, String> entry : headers.entrySet()) { http.setRequestProperty(entry.getKey(), entry.getValue()); } } http.setDoOutput(true); http.setDoInput(true); http.connect(); return http; } /** * 初始化http请求参数 * @param url * @param method * @return * @throws IOException * @throws NoSuchAlgorithmException * @throws NoSuchProviderException * @throws KeyManagementException */ private static HttpsURLConnection initHttps (String url, String method, Map<String, String> headers) throws IOException, NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException { TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // 从上述SSLContext对象中得到SSLSocketFactory对象 SSLSocketFactory ssf = sslContext.getSocketFactory(); URL _url = new URL(url); HttpsURLConnection http = (HttpsURLConnection) _url.openConnection(); // 设置域名校验 http.setHostnameVerifier(new HttpKit().new TrustAnyHostnameVerifier()); // 连接超时 http.setConnectTimeout(25000); // 读取超时 --服务器响应比较慢,增大时间 http.setReadTimeout(25000); http.setRequestMethod(method); http.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); http.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36"); if (null != headers && !headers.isEmpty()) { for (Entry<String, String> entry : headers.entrySet()) { http.setRequestProperty(entry.getKey(), entry.getValue()); } } http.setSSLSocketFactory(ssf); http.setDoOutput(true); http.setDoInput(true); http.connect(); return http; } /** * * @description * 功能描述: get 请求 * @return 返回类型: */ public static String get(String url, Map<String, String> params, Map<String, String> headers) { StringBuffer bufferRes = null; try { HttpURLConnection http = null; if (isHttps(url)) { http = initHttps(initParams(url, params), _GET, headers); } else { http = initHttp(initParams(url, params), _GET, headers); } InputStream in = http.getInputStream(); BufferedReader read = new BufferedReader(new InputStreamReader(in, DEFAULT_CHARSET)); String valueString = null; bufferRes = new StringBuffer(); while ((valueString = read.readLine()) != null){ bufferRes.append(valueString); } read.close(); in.close(); if (http != null) { http.disconnect();// 关闭连接 } return bufferRes.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } /** * * @description * 功能描述: get 请求 * @return 返回类型: */ public static String get(String url) { return get(url, null); } /** * * @description * 功能描述: get 请求 * @return 返回类型: * @throws UnsupportedEncodingException */ public static String get(String url, Map<String, String> params) { return get(url, params, null); } /** * * @description * 功能描述: POST 请求 * @return 返回类型: */ public static String post(String url, String params, Map<String, String> headers) { StringBuffer bufferRes = null; try { HttpURLConnection http = null; if (isHttps(url)) { http = initHttps(url, _POST, headers); } else { http = initHttp(url, _POST, headers); } OutputStream out = http.getOutputStream(); out.write(params.getBytes(DEFAULT_CHARSET)); out.flush(); out.close(); InputStream in = http.getInputStream(); BufferedReader read = new BufferedReader(new InputStreamReader(in, DEFAULT_CHARSET)); String valueString = null; bufferRes = new StringBuffer(); while ((valueString = read.readLine()) != null){ bufferRes.append(valueString); } read.close(); in.close(); if (http != null) { http.disconnect();// 关闭连接 } return bufferRes.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } /** * post map 请求 * @param url * @param params * @return * @throws UnsupportedEncodingException */ public static String post(String url, Map<String, String> params) throws UnsupportedEncodingException { return post(url, map2Url(params), null); } /** * post map 请求,headers请求头 * @param url * @param params * @return * @throws UnsupportedEncodingException */ public static String post(String url, Map<String, String> params, Map<String, String> headers) throws UnsupportedEncodingException { return post(url, map2Url(params), headers); } /** * * @description * 功能描述: 构造请求参数 * @return 返回类型: * @throws UnsupportedEncodingException */ public static String initParams(String url, Map<String, String> params) throws UnsupportedEncodingException { if (null == params || params.isEmpty()) { return url; } StringBuilder sb = new StringBuilder(url); if (url.indexOf("?") == -1) { sb.append("?"); } sb.append(map2Url(params)); return sb.toString(); } /** * map构造url * @description * 功能描述: * @return 返回类型: * @throws UnsupportedEncodingException */ public static String map2Url(Map<String, String> paramToMap) throws UnsupportedEncodingException { if (null == paramToMap || paramToMap.isEmpty()) { return null; } StringBuffer url = new StringBuffer(); boolean isfist = true; for (Entry<String, String> entry : paramToMap.entrySet()) { if (isfist) { isfist = false; } else { url.append("&"); } url.append(entry.getKey()).append("="); String value = entry.getValue(); if (StringUtils.isNotEmpty(value)) { url.append(URLEncoder.encode(value, DEFAULT_CHARSET)); } } return url.toString(); } /** * 检测是否https * @param url */ private static boolean isHttps (String url) { return url.startsWith("https"); } /** * https 域名校验 * @param url * @param params * @return */ public class TrustAnyHostnameVerifier implements HostnameVerifier { public boolean verify(String hostname, SSLSession session) { return true;// 直接返回true } } } // 证书管理 class MyX509TrustManager implements X509TrustManager { public X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } }
相关推荐
UploadFileUtil工具类可以针对各种文件(图片、声音)进行httpConnection 上传
相信大家在调用rest webservice通常使用httpclient.该示例代码是使用httpconnection的形式,以POST和GET两种方式提交调用REST WebService。在项目中一直使用的工具类,分享给大家
`HttpConnection.cpp`和`HttpConnection.h`很可能是这个类的实现和声明文件。在`HttpConnection.h`中,可能会定义类的接口,包括构造函数、设置请求方法、设置URL、设置请求头、设置数据等方法,以及执行请求和获取...
通过HttpConnection请求跨域接口 public String invokeServiceMethod(String url,Map,String> params,Map, String> header) throws Exception{ HttpClient httpclient=new DefaultHttpClient(); HttpResponse...
在实际项目中,为了提高代码的可维护性和复用性,我们可以将这部分功能封装成一个服务或者工具类,以处理不同场景下的图片上传需求。同时,考虑到网络操作的异步性质,我们通常会使用AsyncTask、Retrofit或Volley等...
- **应用场景**:在本实验中,网络管理软件需要创建不同类型的网络连接类,如POP3Connection、IMAPConnection、HTTPConnection。使用工厂方法模式,可以根据协议类型创建相应的连接类。 3. **抽象工厂模式**: - ...
在BlackBerry中,要从URL加载Bitmap,我们需要使用HttpConnection类来建立与远程服务器的连接,然后通过InputStream读取数据。以下是一个基本的步骤: 1. 创建HttpConnection对象,打开到指定URL的连接。这通常涉及...
`HTTPConnection` 是 `httplib` 模块中最基础也是最重要的类之一,它代表了客户端与服务器之间的一次交互——即一次请求/响应过程。 ##### 构造函数 ```python HTTPConnection(host[, port[, strict[, timeout]]]) ...
其中,发送查询请求可以通过HttpConnection类实现,具体代码示例如下: ```java HttpConnection cn = (HttpConnection) Connector.open("http://your-server-url.com/query"); ``` - **视频点播服务**:服务器端...
5. **Utility.java**:工具类,提供了一些辅助功能。 通过以上组件的协同工作,可以构建一个完整的断点续传系统。在这个系统中,`SiteFileFetch` 负责协调各个部分的工作,`FileSplitterFetch` 和 `FileAccess` ...
总的来说,HttpURLConnection是Java中进行HTTP通信的标准工具,其灵活性和可配置性使其成为开发人员的首选。通过理解并熟练运用它的各项功能,你可以创建高效、可控的网络请求,实现与服务器的可靠交互。在编程实践...
- `Utility.java`:工具类,提供通用功能支持。 - `TestMethod.java`:用于测试和验证功能的正确性。 以上就是使用Java实现断点续传的详细过程及其背后的原理。通过合理的代码设计和模块划分,不仅可以提高代码的...
网络编程在J2ME中非常重要,HttpConnection和Socket类提供了连接到互联网的能力。通过这些类,开发者可以创建HTTP请求、发送和接收数据,实现移动设备上的网络应用。 文件操作方面,FileConnection接口提供了读写...
在这个示例中,`HttpConnectionPost`可能涉及到了`HttpConnection`类,用于建立HTTP连接并发送POST请求到服务器,实现数据的上传和下载。 2. **数据库交互**:`bank.mdb`文件可能是一个Micro Edition Persistent ...
标题中提到的“J2ME各API查询工具”可能是一个实用的开发辅助软件,帮助开发者快速查找和理解J2ME平台提供的各种API。API(Application Programming Interface)是软件开发中的一个重要概念,它定义了开发者如何与...
它提供了一系列方便的工具类,如`FileUtils`、`IOUtils`,用于文件操作、流操作和转换。在HttpClient中,可能用到这些工具进行文件上传或下载时的数据读写。 4. **httpmime-4.5.1.jar**: HttpClient的MIME扩展库...
`HTTPConnection` 类允许你创建与指定服务器的连接,`setopt` 方法设置请求参数,如 `FOLLOWLOCATION` 追踪重定向,`USERAGENT` 设置浏览器标识以模拟用户行为。`pycurl` 是一个更强大的库,提供了更高效的 HTTP ...
J2ME的`HttpConnection`类可以用来发送HTTP请求,获取远程数据。 最后,这些源代码还可以让你了解如何组织和管理项目结构,以及如何使用J2ME的打包工具(如WTK,Wireless Toolkit)将源代码编译为可运行的JAR文件,...
- 安装必要的工具:首先,需要安装JDK 1.6,然后是WTK(Java Wireless Toolkit)2.3,NetBeans IDE 4.1以及Mobility Pack 4.1。安装顺序是JDK,WTK,NetBeans,最后是Mobility Pack。安装过程中,确保NetBeans和...
- **网络通信**:MIDP提供了HttpConnection和SocketConnection类,支持HTTP和TCP/IP通信。 - **Java应用管理**:MIDlet类是J2ME应用程序的基本单位,它负责应用程序的生命周期管理。 ### 4. 程序结构 J2ME应用程序...