HttpURLConnection链接http请求
1、HttpURLConnection处理
public static String request( String content,String token) {
if (token == null){
return "token未获取";
}
System.out.println(content);
HttpURLConnection conn = null;
OutputStream os = null;
InputStreamReader isr = null;
String response = "";
try {
try {
URL wsUrl = new URL("http://127.0.0.1/api/test");
conn = (HttpURLConnection) wsUrl.openConnection();
conn.setDoInput(true); // 获取服务端的响应
conn.setDoOutput(true); // 向服务器发送数据
conn.setUseCaches(false);
conn.setReadTimeout(10000); //读取超时
conn.setConnectTimeout(10000); //服务器响应超时
conn.setRequestMethod("POST"); // 请求方式 POST和GET
conn.setUseCaches(false); // Post 请求不能使用缓存
conn.setInstanceFollowRedirects(true); //设置本次连接是否自动重定向
token =JSONObject.parseObject(getToken()).getString("result");
conn.setRequestProperty("Token",token);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
String param = "data=" + URLEncoder.encode(content, "UTF-8");//对内容进行编码转换
System.out.println(param);
conn.connect();
os = conn.getOutputStream();
os.write(param.getBytes());
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (os != null) os.close();
}
// 获得响应状态码̬
int resultCode = conn.getResponseCode();
if (HttpURLConnection.HTTP_OK == resultCode) {
char[] chr = new char[1024];
isr = new InputStreamReader(conn.getInputStream(),"UTF-8");//编码转换
int readSize = isr.read(chr);
if (readSize > 0) {
response = new String(chr, 0, readSize);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (isr != null) isr.close();
if (conn != null) conn.disconnect();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return response;
}
2、URIBuilder处理
public static String call_http_get(String url, Map<String, String> param,String token) {
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String result = "";
// 超时时间设置
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(180*1000)
.setConnectTimeout(30*100).build();
try {
String url_with_token = url + token;
URIBuilder builder = new URIBuilder(url_with_token);
if (null != param && (!param.isEmpty())) {
// 创建参数队列
List<NameValuePair> formParams = new ArrayList<>();
for (Entry<String, String> entry : param.entrySet()) {
formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
}
builder.setParameters(formParams);
}
// 设置参数 请求方式 HttpGet和HttpPost
HttpGet httpGet = new HttpGet(builder.build());
httpGet.setConfig(requestConfig);
// 发送请求
response = httpclient.execute(httpGet);
result = EntityUtils.toString(response.getEntity(), Charsets.UTF_8);//编码格式
if (response.getStatusLine().getStatusCode() != 200) {
logger.error("Error in getMap. Request URL is [{}], params [{}]. Result:[{}]", url, formDataParam, result);
}
} catch (Exception e) {
logger.error("Error in getMap", e);
} finally {
HttpClientUtils.closeQuietly(httpclient);
HttpClientUtils.closeQuietly(response);
}
logger.info("call_http_get_response:"+result);
return result;
}