httpputdelete⽅式请求HttpClient使⽤Delete⽅式提交数据
1. http请求主要有以下⼏种⽅法来对指定资源做不同操作:
1 HTTP/1.1协议中共定义了⼋种⽅法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作⽅式:
2 . OPTIONS - 返回服务器针对特定资源所⽀持的HTTP请求⽅法。
3也可以利⽤向Web服务器发送'*'的请求来测试服务器的功能性。
4 . HEAD - 向服务器索要与GET请求相⼀致的响应,只不过响应体将不会被返回。
5这⼀⽅法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
6 . GET - 向特定的资源发出请求。
7注意:GET⽅法不应当被⽤于产⽣“副作⽤”的操作中,例如在web app.中。
8其中⼀个原因是GET可能会被⽹络蜘蛛等随意访问。
9 . POST - 向指定资源提交数据进⾏处理请求(例如提交表单或者上传⽂件)。
10数据被包含在请求体中。POST请求可能会导致新的资源的建⽴和/或已有资源的修改。
11 . PUT - 向指定资源位置上传其最新内容。
12 . DELETE - 请求服务器删除Request-URI所标识的资源。
13 . TRACE - 回显服务器收到的请求,主要⽤于测试或诊断。
14 . CONNECT - HTTP/1.1协议中预留给能够将连接改为管道⽅式的代理服务器。
2.HttpDelete的⽅法中本⾝并没有setEntity⽅法,参考HttpPost的setEntity⽅法,⾃定义⼀个HttpDeleteWithBody类 1import java.URI;
2
3import org.apache.hods.HttpEntityEnclosingRequestBase;
4
5public class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase{
6public static final String METHOD_NAME = "DELETE";
7
8/**
9 * 获取⽅法(必须重载)
10 *
11 * @return
12*/
13 @Override
14public String getMethod() {
15return METHOD_NAME;
16 }
17
18public HttpDeleteWithBody(final String uri) {
19super();
20 ate(uri));
21 }
22
23public HttpDeleteWithBody(final URI uri) {
24super();
25 setURI(uri);
26 }
27
28public HttpDeleteWithBody() {
delete in
29super();
30 }
31
32 }
3. ⽤HttpClient 调⽤ HttpDeleteWithBody的⽅法,就可以进⾏body的操作了
1public static String doDelete(String data, String url) throws IOException {
2 CloseableHttpClient client = null;
3 HttpDeleteWithBody httpDelete = null;
4 String result = null;
5try {
6 client = ateDefault();
7 httpDelete = new HttpDeleteWithBody(url);
8
9 httpDelete.addHeader("Content-type","application/json; charset=utf-8");
10 httpDelete.setHeader("Accept", "application/json; charset=utf-8");
11 httpDelete.setEntity(new StringEntity(data));
12
13 CloseableHttpResponse response = ute(httpDelete);
14 HttpEntity entity = Entity();
15 result = String(entity);
16
17if (200 == StatusLine().getStatusCode()) {
18 logger.info("DELETE⽅式请求远程调⽤成功.msg={}", result);
19 }
20 } catch (Exception e) {
21 ("DELETE⽅式请求远程调⽤失败,errorMsg={}", e.getMessage());
22 } finally {
23 client.close();
24 }
25return result;
26
27 }
28 }
HttpClient使⽤put⽅式提交数据
1public static String httpPut(String urlPath, String data, String charSet, String[] header)
2 {
3 String result = null;
4 URL url = null;
5 HttpURLConnection httpurlconnection = null;
6try
7 {
8 url = new URL(urlPath);
9 httpurlconnection = (HttpURLConnection) url.openConnection();
10 httpurlconnection.setDoInput(true);
11 httpurlconnection.setDoOutput(true);
12 httpurlconnection.setConnectTimeout(2000000);// 设置连接主机超时(单位:毫秒)
13 httpurlconnection.setReadTimeout(2000000);// 设置从主机读取数据超时(单位:毫秒)
14
15if (header != null)
16 {
17for (int i = 0; i < header.length; i++)
18 {
19 String[] content = header[i].split(":");
20 httpurlconnection.setRequestProperty(content[0], content[1]);
21 }
22 }
23
24 httpurlconnection.setRequestMethod("PUT");
25 httpurlconnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
26// httpurlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 27
28if (StringUtils.isNotBlank(data))
29 {
30 OutputStream().Bytes("UTF-8"));
31 }
32 OutputStream().flush();
33 OutputStream().close();
34int code = ResponseCode();
35
36if (code == 200)
37 {
38 DataInputStream in = new InputStream());
39int len = in.available();
40byte[] by = new byte[len];
41 in.readFully(by);
42if (StringUtils.isNotBlank(charSet))
43 {
44 result = new String(by, Charset.forName(charSet));
45 } else
46 {
47 result = new String(by);
48 }
49 in.close();
50 } else
51 {
52 ("请求地址:" + urlPath + "返回状态异常,异常号为:" + code);
53 }
54 } catch (Exception e)
55 {
56 ("访问url地址:" + urlPath + "发⽣异常", e);
57 } finally
58 {
59 url = null;
60if (httpurlconnection != null)
61 {
62 httpurlconnection.disconnect();
63 }
64 }
65return result;
66 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论