{"id":760,"date":"2013-09-29T11:31:41","date_gmt":"2013-09-29T03:31:41","guid":{"rendered":"http:\/\/www.yeetrack.com\/?p=760"},"modified":"2013-09-29T11:31:41","modified_gmt":"2013-09-29T03:31:41","slug":"defaulthttpclient-is-deprecated","status":"publish","type":"post","link":"https:\/\/www.yeetrack.com\/?p=760","title":{"rendered":"DefaultHttpClient is deprecated"},"content":{"rendered":"<p>\u6700\u8fd1\u5728\u4f7f\u7528Apache\u7684httpclient\u7684\u65f6\u5019\uff0cmaven\u5f15\u7528\u4e86\u6700\u65b0\u7248\u672c4.3,\u53d1\u73b0Idea\u63d0\u793aDefaultHttpClient\u7b49\u5e38\u7528\u7684\u7c7b\u5df2\u7ecf\u4e0d\u63a8\u8350\u4f7f\u7528\u4e86\uff0c\u4e4b\u524d\u5728\u4f7f\u75284.2.3\u7248\u672c\u7684\u65f6\u5019\uff0c\u8fd8\u6ca1\u6709\u88abdeprecated\u3002\u53bb\u770b\u4e86\u4e0b\u5b98\u65b9\u6587\u6863\uff0c\u786e\u5b9e\u4e0d\u63a8\u8350\u4f7f\u7528\u4e86\uff0c<a href=\"http:\/\/hc.apache.org\/httpcomponents-client-ga\/httpclient\/apidocs\/org\/apache\/http\/impl\/client\/DefaultHttpClient.html\">\u70b9\u51fb\u6b64\u5904\u8be6\u60c5<\/a>\u3002<\/p>\n<ul>\n<li><strong>DefaultHttpClient<\/strong> ---&gt; <strong>CloseableHttpClient<\/strong><\/li>\n<li><strong>HttpResponse<\/strong> ---&gt; <strong>CloseableHttpResponse<\/strong><\/li>\n<\/ul>\n<p>\u5b98\u65b9\u7ed9\u51fa\u4e86\u65b0api\u7684\u6837\u4f8b\uff0c\u5982\u4e0b\u3002<!--more--><\/p>\n<p>Get\u65b9\u6cd5\uff1a<\/p>\n<pre><code>    CloseableHttpClient httpclient = HttpClients.createDefault();\n    HttpGet httpGet = new HttpGet(\"http:\/\/targethost\/homepage\");\n    CloseableHttpResponse response1 = httpclient.execute(httpGet);\n    \/\/ The underlying HTTP connection is still held by the response object\n    \/\/ to allow the response content to be streamed directly from the network socket.\n    \/\/ In order to ensure correct deallocation of system resources\n    \/\/ the user MUST either fully consume the response content  or abort request\n    \/\/ execution by calling CloseableHttpResponse#close().\n    \/\/\u5efa\u7acb\u7684http\u8fde\u63a5\uff0c\u4ecd\u65e7\u88abresponse1\u4fdd\u6301\u7740\uff0c\u5141\u8bb8\u6211\u4eec\u4ece\u7f51\u7edcsocket\u4e2d\u83b7\u53d6\u8fd4\u56de\u7684\u6570\u636e\n    \/\/\u4e3a\u4e86\u91ca\u653e\u8d44\u6e90\uff0c\u6211\u4eec\u5fc5\u987b\u624b\u52a8\u6d88\u8017\u6389response1\u6216\u8005\u53d6\u6d88\u8fde\u63a5\uff08\u4f7f\u7528CloseableHttpResponse\u7c7b\u7684close\u65b9\u6cd5\uff09\n\n    try {\n        System.out.println(response1.getStatusLine());\n        HttpEntity entity1 = response1.getEntity();\n        \/\/ do something useful with the response body\n        \/\/ and ensure it is fully consumed\n        EntityUtils.consume(entity1);\n    } finally {\n        response1.close();\n    }\n<\/code><\/pre>\n<p>Post\u65b9\u6cd5\uff1a<\/p>\n<pre><code>    HttpPost httpPost = new HttpPost(\"http:\/\/targethost\/login\");\n    \/\/\u62fc\u63a5\u53c2\u6570\n    List &lt;NameValuePair&gt; nvps = new ArrayList &lt;NameValuePair&gt;();\n    nvps.add(new BasicNameValuePair(\"username\", \"vip\"));\n    nvps.add(new BasicNameValuePair(\"password\", \"secret\"));\n    httpPost.setEntity(new UrlEncodedFormEntity(nvps));\n    CloseableHttpResponse response2 = httpclient.execute(httpPost);\n\n    try {\n        System.out.println(response2.getStatusLine());\n        HttpEntity entity2 = response2.getEntity();\n        \/\/ do something useful with the response body\n        \/\/ and ensure it is fully consumed\n        \/\/\u6d88\u8017\u6389response\n        EntityUtils.consume(entity2);\n    } finally {\n        response2.close();\n    }\n<\/code><\/pre>\n<p>\u518d\u5f80\u4e0b\u770bHttpClients\u7684\u6e90\u7801\uff0c\u5177\u4f53\u7684\u5b9e\u73b0\u90fd\u5728<code>HttpClientBuilder<\/code>\u7684<code>build<\/code>\u65b9\u6cd5\u4e2d\uff0c\u6709\u5174\u8da3\u7684\u53ef\u4ee5\u53bbapache\u770b\u6e90\u7801\u3002<\/p>\n<pre><code>    \/**\n    * Creates {@link CloseableHttpClient} instance with default\n    * configuration.\n    *\/\n    public static CloseableHttpClient createDefault() {\n        return HttpClientBuilder.create().build();\n    }\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\u5728\u4f7f\u7528Apache\u7684httpclient\u7684\u65f6\u5019\uff0cmaven\u5f15\u7528\u4e86\u6700\u65b0\u7248\u672c4.3,\u53d1\u73b0Idea\u63d0\u793aDefaultHttpClient\u7b49\u5e38\u7528\u7684\u7c7b\u5df2\u7ecf\u4e0d\u63a8\u8350\u4f7f\u7528\u4e86\uff0c\u4e4b\u524d\u5728\u4f7f\u75284.2.3\u7248\u672c\u7684\u65f6\u5019\uff0c\u8fd8\u6ca1\u6709&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[33],"tags":[8,7,5,13,41],"class_list":["post-760","post","type-post","status-publish","format-standard","hentry","category-coding","tag-java","tag-7","tag-5","tag-13","tag-41"],"views":21653,"_links":{"self":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/760","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=760"}],"version-history":[{"count":1,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/760\/revisions"}],"predecessor-version":[{"id":761,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=\/wp\/v2\/posts\/760\/revisions\/761"}],"wp:attachment":[{"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yeetrack.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}