纯 java 实现 Http 资源读取工具,支持发送和接收数据
来源:互联网 发布:淘宝代办食品流通证 编辑:程序博客网 时间:2024/05/27 20:09
原文:纯 java 实现 Http 资源读取工具,支持发送和接收数据,不依赖任何第三方 jar 包
源代码下载地址:http://www.zuidaima.com/share/1550463379950592.htm
纯 java 实现 Http 资源读取工具,支持发送和接收数据,不依赖任何第三方 jar 包
纯 java 实现 Http 资源读取工具,支持发送和接收数据,不依赖任何第三方 jar 包
1. 抓取指定 URL 的资源,可以作为流,也可以作为 String
2. 向指定 URL POST 数据,模拟表单提交。
例如:你想模拟 XXX 自动登陆,然后再发表心情、签名之类的
3. 支持 URL 重定向
/* * Copyright 2012-2013 The Haohui Network Corporation */package com.haohui.common.utils;/** * @file HttpUtil.java * * @brief * HttpUtil is a single class containing methods to conveniently perform HTTP * requests. HttpUtil only uses regular java io and net functionality and does * not depend on external libraries. * The class contains methods to perform a get, post, put, and delete request, * and supports posting forms. Optionally, one can provide headers. * * Example usage: * * // get * String res = HttpUtil.get("http://www.zuidaima.com"); * * // post * String res = HttpUtil.post("http://www.zuidaima.com/share/1550463379950592.htm", "This is the data"); * * // post form * Map<String, String> params = new HashMap<String, String>(); * params.put("firstname", "Joe"); * params.put("lastname", "Smith"); * params.put("age", "28"); * String res = HttpUtil.postForm("http://site.com/newuser", params); * * // append query parameters to url * String url = "http://mydatabase.com/users"; * Map<String, String> params = new HashMap<String, String>(); * params.put("orderby", "name"); * params.put("limit", "10"); * String fullUrl = HttpUtil.appendQueryParams(url, params); * // fullUrl = "http://mydatabase.com/user?orderby=name&limit=10" * * @license * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * * Copyright (c) 2012 Almende B.V. * * @author Jos de Jong, <jos@almende.org> www.zuidaima.com * @date 2012-05-14 */import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLDecoder;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;/** * https://raw.github.com/wjosdejong/httputil/master/src/com/almende/util/HttpUtil.java * * @project baidamei * @author cevencheng <cevencheng@gmail.com> * @create 2012-11-17 下午2:35:38 */public class HttpUtil {/** * Send a get request * @param url * @return response * @throws IOException */static public String get(String url) throws IOException {return get(url, null);}/** * Send a get request * @param url Url as string * @param headers Optional map with headers * @return response Response as string * @throws IOException */static public String get(String url,Map<String, String> headers) throws IOException {return fetch("GET", url, null, headers);}/** * Send a post request * @param url Url as string * @param body Request body as string * @param headers Optional map with headers * @return response Response as string * @throws IOException */static public String post(String url, String body,Map<String, String> headers) throws IOException {return fetch("POST", url, body, headers);}/** * Send a post request * @param url Url as string * @param body Request body as string * @return response Response as string * @throws IOException */static public String post(String url, String body) throws IOException {return post(url, body, null);}/** * Post a form with parameters * @param url Url as string * @param params map with parameters/values * @return response Response as string * @throws IOException */static public String postForm(String url, Map<String, String> params) throws IOException {return postForm(url, params, null);}/** * Post a form with parameters * @param url Url as string * @param params Map with parameters/values * @param headers Optional map with headers * @return response Response as string * @throws IOException */static public String postForm(String url, Map<String, String> params,Map<String, String> headers) throws IOException {// set content typeif (headers == null) {headers = new HashMap<String, String>();}headers.put("Content-Type", "application/x-www-form-urlencoded");// parse parametersString body = "";if (params != null) {boolean first = true;for (String param : params.keySet()) {if (first) {first = false;}else {body += "&";}String value = params.get(param);body += URLEncoder.encode(param, "UTF-8") + "=";body += URLEncoder.encode(value, "UTF-8");}}return post(url, body, headers);}/** * Send a put request * @param url Url as string * @param body Request body as string * @param headers Optional map with headers * @return response Response as string * @throws IOException */static public String put(String url, String body,Map<String, String> headers) throws IOException {return fetch("PUT", url, body, headers);}/** * Send a put request * @param url Url as string * @return response Response as string * @throws IOException */static public String put(String url, String body) throws IOException {return put(url, body, null);}/** * Send a delete request * @param url Url as string * @param headers Optional map with headers * @return response Response as string * @throws IOException */static public String delete(String url,Map<String, String> headers) throws IOException {return fetch("DELETE", url, null, headers);}/** * Send a delete request * @param url Url as string * @return response Response as string * @throws IOException */static public String delete(String url) throws IOException {return delete(url, null);}/** * Append query parameters to given url * @param url Url as string * @param params Map with query parameters * @return url Url with query parameters appended * @throws IOException */static public String appendQueryParams(String url, Map<String, String> params) throws IOException {String fullUrl = new String(url);if (params != null) {boolean first = (fullUrl.indexOf('?') == -1);for (String param : params.keySet()) {if (first) {fullUrl += '?';first = false;}else {fullUrl += '&';}String value = params.get(param);fullUrl += URLEncoder.encode(param, "UTF-8") + '=';fullUrl += URLEncoder.encode(value, "UTF-8");}}return fullUrl;}/** * Retrieve the query parameters from given url * @param url Url containing query parameters * @return params Map with query parameters * @throws IOException */static public Map<String, String> getQueryParams(String url) throws IOException {Map<String, String> params = new HashMap<String, String>();int start = url.indexOf('?');while (start != -1) {// read parameter nameint equals = url.indexOf('=', start);String param = "";if (equals != -1) {param = url.substring(start + 1, equals);}else {param = url.substring(start + 1);}// read parameter valueString value = "";if (equals != -1) {start = url.indexOf('&', equals);if (start != -1) {value = url.substring(equals + 1, start);}else {value = url.substring(equals + 1);}}params.put(URLDecoder.decode(param, "UTF-8"), URLDecoder.decode(value, "UTF-8"));}return params;}/** * Returns the url without query parameters * @param url Url containing query parameters * @return url Url without query parameters * @throws IOException */static public String removeQueryParams(String url) throws IOException {int q = url.indexOf('?');if (q != -1) {return url.substring(0, q);}else {return url;}}/** * Send a request * @param method HTTP method, for example "GET" or "POST" * @param url Url as string * @param body Request body as string * @param headers Optional map with headers * @return response Response as string * @throws IOException */static public String fetch(String method, String url, String body,Map<String, String> headers) throws IOException {// connectionURL u = new URL(url);HttpURLConnection conn = (HttpURLConnection)u.openConnection();conn.setConnectTimeout(10000);conn.setReadTimeout(10000);// methodif (method != null) {conn.setRequestMethod(method);}// headersif (headers != null) {for(String key : headers.keySet()) {conn.addRequestProperty(key, headers.get(key));}}// bodyif (body != null) {conn.setDoOutput(true);OutputStream os = conn.getOutputStream();os.write(body.getBytes());os.flush();os.close();}// responseInputStream is = conn.getInputStream();String response = streamToString(is);is.close();// handle redirectsif (conn.getResponseCode() == 301) {String location = conn.getHeaderField("Location");return fetch(method, location, body, headers);}return response;}/** * Read an input stream into a string * @param in * @return * @throws IOException */static public String streamToString(InputStream in) throws IOException {StringBuffer out = new StringBuffer();byte[] b = new byte[4096];for (int n; (n = in.read(b)) != -1;) {out.append(new String(b, 0, n));}return out.toString();}}
0 0
- 纯 java 实现 Http 资源读取工具,支持发送和接收数据
- 纯 java 实现 Http 资源读取工具,支持发送和接收数据,不依赖任何第三方 jar 包
- 纯 java 实现 Http 资源读取工具,支持发送和接收数据,不依赖任何第三方 jar 包
- java 实现http协议发送接收数据
- 数据发送和接收
- Java实现Socket发送和接收文件
- 需要用C#http协议发送和接收数据
- Java基础——实现UDP发送数据和接收数据
- Java Socket发送与接收HTTP消息简单实现
- Java Socket发送与接收HTTP消息简单实现
- Java Socket发送与接收HTTP消息简单实现
- Java Socket发送与接收HTTP消息简单实现
- Java Socket发送与接收HTTP消息简单实现
- Java socket模拟发送和接收HTTP消息
- MQTT Java客户端Eclipse paho实现数据的发送和接收
- HttpClient和HttpUrlConnection实现post发送和接收json数据
- java实现http post方法发送数据
- C# WinForm实现UDP发送和接收数据
- APUE之实际用户ID、有效用户ID和保存设置用户ID
- 如何在Struts中配置数据源在什么文件?用什么标签?如何取出Data Source?
- c#字符串操作
- 使用SSH无密码验证访问树莓派
- 在一个int数组里查找出所有这样的数,它大于等于左侧所有数,小于等于右侧所有数。
- 纯 java 实现 Http 资源读取工具,支持发送和接收数据
- 状压DP poj 2288 Islands and Bridges
- jboss历史版本地址url
- HomeKit人机界面指南
- Python hashlib模块
- 「小技巧」Ubuntu 里设定对应的pdf阅读器
- 16/24点阵字库(经典)
- 表单非model属性存取
- poj 2240 Arbitrage(最短路径)