Java httpclient请求

来源:互联网 发布:jquery rotate.js cdn 编辑:程序博客网 时间:2024/06/05 19:06

最近遇到要用java代码发起http请求,分享一个小列子.

1.发起get请求

@POST
@Path("task/delete")
public void delete(Po po) {
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httpPost
HttpDelete delete = new HttpDelete("http://172.17.81.14:8001/apis/"+po.getId());
// 添加请求头信息
delete.setHeader("Content-Type", "application/json");
// 发送Post,并返回一个HttpResponse对象
try {
HttpResponse response = httpclient.execute(delete);
@SuppressWarnings("unused")
Integer result = response.getStatusLine().getStatusCode();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

2.post请求

@POST
@Path("task/insert")
public String getSerieObj(Po po) {
String result = "";
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httpPost
HttpPost httppost = new HttpPost("http://172.17.81.14:8001/apis");
// 建立一个JSONObject 添加参数
JSONObject jobj = new JSONObject();
jobj.put("methods", po.getMethods());
jobj.put("uris", po.getUris());
jobj.put("id", po.getId());
jobj.put("hosts", po.getHosts());
jobj.put("preserve_host", po.getPreserve_host());
jobj.put("created_at", po.getCreated_at());
jobj.put("upstream_url", po.getUpstream_url());
jobj.put("https_only", po.getHttps_only());
jobj.put("strip_uri", po.getStrip_uri());
jobj.put("http_if_terminated", po.getHttp_if_terminated());
jobj.put("name", po.getName());
jobj.put("retries", po.getRetries());
// 转换至json格式
String msg = getStringFromJson(jobj);
// 添加请求头信息
httppost.setHeader("Content-Type", "application/json");
try {
// 设置编码 注入post数据
httppost.setEntity(new StringEntity(msg, HTTP.UTF_8));
// 发送Post,并返回一个HttpResponse对象
HttpResponse response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() == 400) {
throw new InvalidRestParamException("参数错误");
} else if (response.getStatusLine().getStatusCode() == 415) {
throw new ResourceNotFoundException("HTTP请求415错误");
} else if (response.getStatusLine().getStatusCode() == 500) {
throw new RestException("服务器内部错误");
} else if (response.getStatusLine().getStatusCode() == 200) {// 如果状态码为200,发送成功
result = EntityUtils.toString(response.getEntity());
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (RestException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
// 拼接json格式的字符串
public String getStringFromJson(JSONObject adata) {
StringBuffer sb = new StringBuffer();
sb.append("{");
for (Object key : adata.keySet()) {
sb.append("\"" + key + "\":\"" + adata.get(key) + "\",");
}
String rtn = sb.toString().substring(0, sb.toString().length() - 1)
+ "}";
return rtn;
}

3.httpPatch请求

@POST
@Path("task/update")
public void update(Po po) {
String result = "";
// 建立一个JSONObject 添加参数
JSONObject jobj = new JSONObject();
jobj.put("methods", po.getMethods());
jobj.put("uris", po.getUris());
jobj.put("hosts", po.getHosts());
jobj.put("preserve_host", po.getPreserve_host());
jobj.put("upstream_url", po.getUpstream_url());
jobj.put("https_only", po.getHttps_only());
jobj.put("strip_uri", po.getStrip_uri());
jobj.put("http_if_terminated", po.getHttp_if_terminated());
jobj.put("name", po.getName());
jobj.put("retries", po.getRetries());
// 转换至json格式
String msg = getStringFromJson(jobj);

HttpClient httpClient = new DefaultHttpClient();     
        HttpPatch httpPatch = new HttpPatch("http://172.17.81.14:8001/apis/"+po.getId());    
        httpPatch.setHeader("Content-type", "application/json");    
        httpPatch.setHeader("Charset", HTTP.UTF_8);    
        httpPatch.setHeader("Accept", "application/json");    
        httpPatch.setHeader("Accept-Charset", HTTP.UTF_8);       
        try {
        if (msg != null){    
                StringEntity entity = new StringEntity(msg,HTTP.UTF_8);    
                httpPatch.setEntity(entity);    
            }    
HttpResponse response = httpClient.execute(httpPatch);
if (response.getStatusLine().getStatusCode() == 400) {
throw new InvalidRestParamException("参数错误");
} else if (response.getStatusLine().getStatusCode() == 415) {
throw new ResourceNotFoundException("HTTP请求415错误");
} else if (response.getStatusLine().getStatusCode() == 500) {
throw new RestException("服务器内部错误");
} else if (response.getStatusLine().getStatusCode() == 200) {// 如果状态码为200,发送成功
result = EntityUtils.toString(response.getEntity());
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
((Closeable) httpClient).close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
        
}

0 0