引用包
<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
package com.gfjh.core;
import java.net.InetAddress;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.DeleteMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.HeadMethod;
import org.apache.commons.httpclient.methods.OptionsMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.methods.TraceMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.lang3.StringUtils;
public class c {
public static void main(String[] args) {
// TODO Auto-generated method stub
String type = "Get";
String url = "http://www.baidu.com";
Map<String, Object> map = new HashMap<String, Object>();
double begin = System.currentTimeMillis();
HttpMethodBase method = null;
try {
// 匹配请求
if ("Post".equals(type)) {
method = new PostMethod(url);
} else if ("Get".equals(type)) {
method = new GetMethod(url);
} else if ("Delete".equals(type)) {
method = new DeleteMethod(url);
} else if ("Put".equals(type)) {
method = new PutMethod(url);
} else if ("Trace".equals(type)) {
method = new TraceMethod(url);
} else if ("Head".equals(type)) {
method = new HeadMethod(url);
} else if ("Options".equals(type)) {
method = new OptionsMethod(url);
}
HttpClient client = new HttpClient();
client.setConnectionTimeout(30000);
client.setTimeout(30000);
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
method.setRequestHeader("Connection", "close");
method.setRequestHeader("Referer", "https://www.sojson.com");
method.setRequestHeader("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0");
// 设置参数
String[] keys = null, values = null;
NameValuePair[] params = new NameValuePair[keys.length];
for (int i = 0; i < keys.length; i++) {
params[i] = new NameValuePair(keys[i], values[i]);
}
method.setQueryString(params);
// 设置请求头 和上面方法一致,如果一样,那么就覆盖。
String[] headKeys = null, headValues = null;
if (headKeys.length > 0) {
for (int i = 0; i < headKeys.length; i++) {
method.setRequestHeader(headKeys[i], headValues[i]);
}
}
int status = client.executeMethod(method);
map.put("status", status);
Header[] heads = method.getResponseHeaders();
// 获取请求的Host,用于IP解析
String host = method.getHostConfiguration().getHost();
StringBuffer sb = new StringBuffer("");
for (Header header : heads) {
sb.append(header.getName()).append(" : ").append(header.getValue()).append("\r\n");
}
// 头信息
map.put("head", sb.toString());
String result = method.getResponseBodyAsString();
map.put("result", result);
String ip = "未知";
try {
InetAddress iAddress = InetAddress.getByName(host);
ip = iAddress.getHostAddress();
map.put("host", ip);
} catch (Exception e) {
System.out.println("获取IP地址失败,域名:" + host);
}
} catch (UnknownHostException e) {
// 域名错误
map.put("message", "请输入正确的网址");
System.out.println("网址异常[%s]" + url);
} catch (SocketTimeoutException e) {
// 超时
map.put("message", "请求地址超时");
System.out.println("请求地址超时[%s]" + url);
} catch (Exception e) {
// 其他异常
map.put("message", "请求出现未知异常,请重试!");
System.out.println("请求出现未知异常,请重试!" + url);
}
double end = System.currentTimeMillis();
map.put("time", (end - begin) / 1000);
}
}