{"id":84776,"date":"2020-09-29T13:49:04","date_gmt":"2020-09-29T13:49:04","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=87825"},"modified":"2020-09-29T13:49:04","modified_gmt":"2020-09-29T13:49:04","slug":"reading-an-http-response-body-as-a-string-in-java","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/2020\/09\/29\/reading-an-http-response-body-as-a-string-in-java\/","title":{"rendered":"Reading an HTTP Response Body as a String in Java"},"content":{"rendered":"<p class=\"syndicated-attribution\"><meta name= \\\"keywords \\\" content= \\\"\u96fb\u5b50\u8a08\u7b97\u6a5f, \u6559\u80b2, IT \u96fb\u8166\u73ed,\u96fb\u8166\u88dc\u7fd2\uff0c \u96fb\u8166\u73ed\uff0c \u5bb6\u6559\uff0c \u79c1\u4eba\u8001\u5e2b\uff0c \u8cc7\u8a0a\u6280\u8853\uff0c \u7a0b\u5e8f\u8a2d\u8a08\uff0c \u96fb\u5b50\u8a08\u7b97\u6a5f\uff0c \u904a\u6232\uff0c \u860b\u679c\uff0c \u96fb\u5f71\uff0c \u8a08\u7b97\u6a5f\uff0c\u7de8\u78bc\uff0c Java\uff0c C\/C++\uff0c JavaScript\uff0c PHP\uff0c HTML\uff0c CSS\uff0c MySQL\uff0c mobile\uff0c Android\uff0c \u52d5\u6f2b\uff0c Python\uff0c teacher\uff0c \u88dc\u7fd2\uff0c \u96fb\u8166\u88dc\u7fd2 \u8cc7\u8a0a, \u7535\u5b50\u8ba1\u7b97\u673a, IT ,Game, apple, movie, Computer,student,Java,\u6559\u80b2, ,\u5b66\u751f, \u5b66\u4e60, learn, \u6559\u5b66,  Android, apple,anime, animation, \u4fe1\u606f\u6280\u672f, \u7a0b\u5e8f\u8bbe\u8ba1, \u79fb\u52a8\u7535\u8bdd, \u8cc7\u8a0a\u79d1\u6280,Game, Jeu, Juego,Call Of Duty ,\u4f7f\u547d\u53ec\u559a , \u6e38\u620f, \u7535\u5b50\u6e38\u620f,, \u591a\u4eba\u7535\u5b50\u6e38\u620f, \u7f51\u7edc\u6e38\u620f\uff0conline\uff0conline game, \u624b\u673a\u6e38\u620f, mobile \\\"><\/p>\n<h2 data-id=\"introduction\">1. Introduction<\/h2>\n<div class=\"bd-anchor\" id=\"introduction\"><\/div>\n<p>In this tutorial, we&#8217;ll explore several libraries for reading an HTTP response body as a string in Java. Since the first versions, Java provided the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-http-request\"><em>HttpURLConnection<\/em><\/a> API. This includes only basic features and is known for not being very user-friendly.<\/p>\n<p>With the release of JDK 11, Java introduced the new and improved <em><a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-9-http-client\">HttpClient<\/a> <\/em>API to handle HTTP communication. We&#8217;ll cover these libraries, and we&#8217;ll check some alternatives such as the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/httpclient-guide\">Apache HttpClient<\/a> and the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/rest-template\">Spring Rest Template<\/a>.<\/p>\n<h2 data-id=\"httpclient\">2. <em>HttpClient<\/em><\/h2>\n<div class=\"bd-anchor\" id=\"httpclient\"><\/div>\n<p>As we mentioned before, <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-9-http-client\"><em>HttpClient<\/em><\/a> was added to Java 11. It allows us to access resources over the network. But, unlike <em>HttpURLConnection<\/em>, <strong><em>HttpClient<\/em> supports HTTP\/1.1 and HTTP\/2<\/strong>. Moreover, it <strong>provides both synchronous and asynchronous request types<\/strong>.<\/p>\n<p><em>HttpClient<\/em> offers a modern API with a lot of flexibility and powerful features. Mainly, this API consists of three core classes: <em>HttpClient<\/em>, <em>HttpRequest<\/em>, and <em>HttpResponse<\/em>.<\/p>\n<p><em>HttpResponse<\/em> describes the result of an <em>HttpRequest<\/em> call. <strong><em>HttpResponse<\/em> isn&#8217;t created directly and is made available when the body has been fully received.<\/strong><\/p>\n<p>To read a response body as a <em>String,<\/em> we&#8217;ll first need to create simple client and request objects:<\/p>\n<pre><code class=\"language-java\">HttpClient client = HttpClient.newHttpClient();\r\nHttpRequest request = HttpRequest.newBuilder()\r\n    .uri(URI.create(DUMMY_URL))\r\n    .build();<\/code><\/pre>\n<p>Then, we simply use <em>BodyHandlers<\/em> and call the method <em>ofString()<\/em> to return the response:<\/p>\n<pre><code class=\"language-java\">HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());<\/code><\/pre>\n<h2 data-id=\"httpurlconnection\">3. <em>HttpURLConnection<\/em><\/h2>\n<div class=\"bd-anchor\" id=\"httpurlconnection\"><\/div>\n<p><a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-http-request\"><em>HttpURLConnection<\/em><\/a> is a lightweight HTTP client used to access resources via the HTTP or HTTPS protocol and allows us to create an <em>InputStream<\/em>. Once we obtain the <em>InputStream,<\/em> we can read it like a normal local file.<\/p>\n<p>In Java, the main classes we can use to access the Internet are the <em>java.net.URL<\/em> class and the <em>java.net.HttpURLConnection<\/em> class. First, we&#8217;ll use the <em>URL<\/em> class to point to a web resource. Then, we can access it by using the <em>HttpURLConnection<\/em> class.<\/p>\n<p>To get the response body from a <em>URL<\/em> as a <em>String<\/em>, we should first <strong>create an <em>HttpURLConnection<\/em><\/strong> using our <em>URL<\/em>:<\/p>\n<pre><code class=\"language-java\">HttpURLConnection connection = (HttpURLConnection) new URL(DUMMY_URL).openConnection();<\/code><\/pre>\n<p>The <em>new URL(DUMMY_URL).openConnection()<\/em> returns a <em>HttpURLConnection<\/em>. This object allows us to add headers or checking the response code.<\/p>\n<p>Next, let&#8217;s <strong>get the <em>InputStream<\/em> from the <em>connection<\/em><\/strong> object:<\/p>\n<pre><code class=\"language-java\">InputStream inputStream = connection.getInputStream();<\/code><\/pre>\n<p>Finally, we need to <strong><a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/convert-input-stream-to-string\">convert the <em>InputStream<\/em> to a <em>String<\/em><\/a><\/strong>.<\/p>\n<h2 data-id=\"apache-httpclient\">4. Apache <em>HttpClient<\/em><\/h2>\n<div class=\"bd-anchor\" id=\"apache-httpclient\"><\/div>\n<p>In this section, we&#8217;ll see how to use the <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/httpclient-guide\">Apache <em>HttpClient<\/em><\/a>\u00a0for reading an HTTP response body as a string.<\/p>\n<p>To use this library, we&#8217;ll need to add its dependency to our Maven project:<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\r\n    &lt;groupId&gt;org.apache.httpcomponents&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;httpclient&lt;\/artifactId&gt;\r\n    &lt;version&gt;4.5.12&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>We can <strong>retrieve and send data via the <em>CloseableHttpClient<\/em> class<\/strong>. To create an instance of it with default configuration we can use the <em>HttpClients.createDefault()<\/em>.<\/p>\n<p><em>CloseableHttpClient<\/em> provides an <em>execute<\/em> method to send and receive data. This method uses a parameter of type <em>HttpUriRequest<\/em>, which has many subclasses including <em>HttpGet<\/em> and <em>HttpPost<\/em>.<\/p>\n<p>Let&#8217;s first <strong>create an <em>HttpGet<\/em> object<\/strong>:<\/p>\n<pre><code class=\"language-java\">HttpGet request = new HttpGet(DUMMY_URL);<\/code><\/pre>\n<p>Second, let&#8217;s <strong>create the client<\/strong>:<\/p>\n<pre><code class=\"language-java\">CloseableHttpClient client = HttpClients.createDefault();<\/code><\/pre>\n<p>Third, we <strong>retrieve the response object<\/strong> from the result of the <em>execute<\/em> method:<\/p>\n<pre><code class=\"language-java\">CloseableHttpResponse response = client.execute(request);<\/code><\/pre>\n<p>Finally, we return the response body by <strong>converting the response entity to a <em>String<\/em><\/strong>:<\/p>\n<pre><code class=\"language-java\">HttpEntity entity = response.getEntity();\r\nString result = EntityUtils.toString(entity);<\/code><\/pre>\n<h2 data-id=\"spring-resttemplate\">5. Spring <em>RestTemplate<\/em><\/h2>\n<div class=\"bd-anchor\" id=\"spring-resttemplate\"><\/div>\n<p>In this section, we&#8217;ll see how to use <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/rest-template\">Spring <em>RestTemplate<\/em><\/a> for reading an HTTP response body as a string.<\/p>\n<p>The <em>RestTemplate<\/em> class is an essential tool provided by Spring that offers <strong>a simple template for making client-side HTTP operations<\/strong> over underlying HTTP client libraries such as the JDK <em>HttpURLConnection<\/em>, Apache <em>HttpClient<\/em>, and others.<\/p>\n<p><em>RestTemplate<\/em> provides <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/web\/client\/RestTemplate.html\">some useful methods<\/a> for creating HTTP requests and handling responses.<\/p>\n<p>We can use this library by first adding some dependencies to our Maven project:<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\r\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\r\n    &lt;version&gt;${spring-boot.version}&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\r\n    &lt;version&gt;${spring-boot.version}&lt;\/version&gt;\r\n    &lt;scope&gt;test&lt;\/scope&gt;\r\n&lt;\/dependency&gt;<\/code><\/pre>\n<p>To make a web request and return the response body as a string, let&#8217;s first <strong>create an instance of <em>RestTemplate<\/em><\/strong>:<\/p>\n<pre><code class=\"language-java\">RestTemplate restTemplate = new RestTemplate();<\/code><\/pre>\n<p>Second, we <strong>get the response object by calling the method <em>getForObject()<\/em>, passing in the URL and desired response type<\/strong>\u00a0\u2014 we&#8217;ll use <em>String.class<\/em> in our example:<\/p>\n<pre><code class=\"language-java\">String response = restTemplate.getForObject(DUMMY_URL, String.class);<\/code><\/pre>\n<h2 data-id=\"conclusion\">6. Conclusion<\/h2>\n<div class=\"bd-anchor\" id=\"conclusion\"><\/div>\n<p>In this article, we\u2019ve seen how to use several libraries for reading an HTTP response body as a <em>String<\/em>.<\/p>\n<p>As usual, the complete code is available <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/github.com\/eugenp\/tutorials\/tree\/master\/httpclient-2\">over on GitHub<\/a>.<\/p>\n<p>The post <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/java-http-response-body-as-string\/\" >Reading an HTTP Response Body as a String in Java<\/a> first appeared on <a href=\"https:\/\/feeds.feedblitz.com\/~\/t\/0\/0\/baeldung\/~https:\/\/www.baeldung.com\/\" >Baeldung<\/a>.<\/p>\n<p><Img align=\"left\" border=\"0\" height=\"1\" width=\"1\" alt=\"\" style=\"border:0;float:left;margin:0;padding:0;width:1px!important;height:1px!important;\" hspace=\"0\" src=\"https:\/\/feeds.feedblitz.com\/~\/i\/636095488\/0\/baeldung\"><\/p>\n<div style=\"clear:both;padding-top:0.2em;\"><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/636095488\/baeldung,\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\" style=\"border:0;margin:0;padding:0;\"><\/a>&#160;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-http-response-body-as-string#respond\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&#160;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-http-response-body-as-string\/feed\/\"><img decoding=\"async\" height=\"20\" style=\"border:0;margin:0;padding:0;\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&#160;<\/div>\n\n<p class=\"syndicated-attribution\"><figure class= \\\"wp-block-image alignnone \\\"><img src= \\\"http:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-content\/uploads\/2016\/05\/logo2-2.png\\\" alt=\\\"IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\\\"\/><figcaption>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427!<\/figcaption><\/figure>\r\n<\/br>Find A Teacher Form:\r\n<\/br>https:\/\/docs.google.com\/forms\/d\/1vREBnX5n262umf4wU5U2pyTwvk9O-JrAgblA-wH9GFQ\/viewform?edit_requested=true#responses\r\n<\/br><\/br>Email:\r\n<\/br>public1989two@gmail.com<br><br><br><br><br><br><br>\r\n<a href=www.itsec.hk style=color:#FFFFFF;>www.itsec.hk<\/a><br>\r\n<a href=\\\"www.itsec.vip\\\" style=color:#FFFFFF;>www.itsec.vip<\/a><br>\r\n<a href=\\\"www.itseceu.uk\\\" style=color:#FFFFFF;>www.itseceu.uk<\/a><br><\/p>","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Explore several options for reading an HTTP response body as a string in Java<\/p>\n<p>The post <a rel=\"NOFOLLOW noopener noreferrer\" href=\"https:\/\/feeds.feedblitz.com\/~\/636095488\/0\/baeldung~Reading-an-HTTP-Response-Body-as-a-String-in-Java\/\" target=\"_blank\">Reading an HTTP Response Body as a String in Java<\/a> first appeared on <a rel=\"NOFOLLOW noopener noreferrer\" href=\"https:\/\/www.baeldung.com\/\" target=\"_blank\">Baeldung<\/a>.<\/p>\n<div><a title=\"Like on Facebook\" href=\"https:\/\/feeds.feedblitz.com\/_\/28\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/fblike20.png\"><\/a>&nbsp;<a title=\"Share on Google+\" href=\"https:\/\/feeds.feedblitz.com\/_\/30\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/googleplus20.png\"><\/a>&nbsp;<a title=\"Pin it!\" href=\"https:\/\/feeds.feedblitz.com\/_\/29\/636095488\/baeldung,\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/pinterest20.png\"><\/a>&nbsp;<a title=\"Tweet This\" href=\"https:\/\/feeds.feedblitz.com\/_\/24\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/twitter20.png\"><\/a>&nbsp;<a title=\"Subscribe by email\" href=\"https:\/\/feeds.feedblitz.com\/_\/19\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/email20.png\"><\/a>&nbsp;<a title=\"Subscribe by RSS\" href=\"https:\/\/feeds.feedblitz.com\/_\/20\/636095488\/baeldung\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/rss20.png\"><\/a>&nbsp;<a rel=\"NOFOLLOW\" title=\"View Comments\" href=\"https:\/\/www.baeldung.com\/java-http-response-body-as-string#respond\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/comments20.png\"><\/a>&nbsp;<a title=\"Follow Comments via RSS\" href=\"https:\/\/www.baeldung.com\/java-http-response-body-as-string\/feed\/\"><img decoding=\"async\" height=\"20\" src=\"https:\/\/assets.feedblitz.com\/i\/commentsrss20.png\"><\/a>&nbsp;<\/div>\n<\/div>","protected":false},"author":214,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"Reading an HTTP Response Body as a String in Java - ITTeacherITFreelance.hk","description":"Explore several options for reading an HTTP response body as a string in Java The post Reading an HTTP Response Body as a String in Java first appeared on Baeld"},"footnotes":""},"categories":[6],"tags":[5523],"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/84776"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/214"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=84776"}],"version-history":[{"count":2,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/84776\/revisions"}],"predecessor-version":[{"id":85408,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/84776\/revisions\/85408"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=84776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=84776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=84776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}