package coffee.util.http;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.net.UnknownHostException;
import java.util.Iterator;
import java.util.Map;
/**
* 通用的http工具类
* @author coffee
*/
public class HttpClient {
protected static String encode = "UTF-8";
protected static StringBuilder doc = new StringBuilder();
// User agent strings.
protected static final String DESKTOP_USERAGENT =
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us)"
+ " AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0"
+ " Safari/530.17";
protected static final String IPHONE_USERAGENT =
"Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us)"
+ " AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0"
+ " Mobile/7A341 Safari/528.16";
/**
* 其中部分特殊字符已经处理
*
* @param linkUrl
* : 监控页面的URL
* @throws IOException
*/
public static String get(String linkUrl) {
doc.delete(0, doc.length());
try {
URL url = new URL(linkUrl);
HttpURLConnection uc = (HttpURLConnection) url.openConnection();
uc.setRequestProperty("user-agent", IPHONE_USERAGENT);
uc.setConnectTimeout(1000 * 10);
BufferedReader in = new BufferedReader(new InputStreamReader(uc
.getInputStream(), encode));
String line = null;
while ((line = in.readLine()) != null) {
doc.append(line);
}
in.close();
uc.disconnect();
}catch(UnknownHostException e){
}catch (IOException ioe) {
ioe.printStackTrace();
}
return doc.toString();
}
/**
* 读取图片
* @param urlStr : 传入的数据是 http://..../xxx.jpg的形式
* @return
*/
public static byte[] getImage(String urlStr){
byte[] imageRaw = null;
try {
URL url = new URL(urlStr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
out.flush();
imageRaw = out.toByteArray();
urlConnection.disconnect();
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return imageRaw;
}
/**
* post方式提交数据
* @param baseUrl : url
* @param paramsMap : 参数集
* @param enc : 编码方式
*/
public static String post(String baseUrl, Map<String,String> paramsMap){
StringBuilder doc = new StringBuilder();
try {
StringBuilder queryString = new StringBuilder();
for(Iterator<String> it=paramsMap.keySet().iterator(); it.hasNext(); ){
String paramName = it.next().toString();
Object paramValue = paramsMap.get(paramName);
if(paramValue == null){
paramValue = "";
}
queryString.append(paramName)
.append("=")
.append(URLEncoder.encode(paramValue.toString(), encode))
.append("&");
}
if(queryString.length() > 0){
queryString.deleteCharAt(queryString.length()-1);
}
URL url = new URL(baseUrl);
HttpURLConnection uc = (HttpURLConnection) url.openConnection();
uc.setRequestMethod("POST");
//设置参数--begin
uc.setDoOutput(true);
byte[] b = queryString.toString().getBytes();
uc.getOutputStream().write(b, 0, b.length);
uc.getOutputStream().flush();
uc.getOutputStream().close();
//参数设置--end
BufferedReader in = new BufferedReader(new InputStreamReader(uc
.getInputStream(), encode));
String line = null;
while ((line = in.readLine()) != null) {
doc.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return doc.toString();
}
}
HttpClient - HttpUrlConnection
最新推荐文章于 2023-03-11 01:07:36 发布