I make some proxy server in andorid which modify http headers, it works ok, but I have to forward full response to 'top layer'.
How I can read whole response (all headers, content, everything) from HttpURLConnection?
HttpURLConnection httpURLConnection; URL url = new URL(ADDRESS); httpURLConnection = (HttpURLConnection) url.openConnection(); // add headers, write output stream, flush if (httpURLConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { Map<String, List<String>> map = httpURLConnection.getHeaderFields(); System.out.println("Printing Response Header...\n"); for (Map.Entry<String, List<String>> entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " ,Value : " + entry.getValue()); } return new DataInputStream(httpURLConnection.getInputStream()); }
In getInputStream I received only content it is possible to have some stream with whole reposne?
There's no way to dump the full HTTP response directly using the HttpURLConnection
, but you can use its various method to reconstruct it. For example,
HttpURLConnection httpURLConnection; URL url = new URL("http://www.google.com"); httpURLConnection = (HttpURLConnection) url.openConnection(); StringBuilder builder = new StringBuilder(); builder.append(httpURLConnection.getResponseCode()) .append(" ") .append(httpURLConnection.getResponseMessage()) .append("\n"); Map<String, List<String>> map = httpURLConnection.getHeaderFields(); for (Map.Entry<String, List<String>> entry : map.entrySet()) { if (entry.getKey() == null) continue; builder.append( entry.getKey()) .append(": "); List<String> headerValues = entry.getValue(); Iterator<String> it = headerValues.iterator(); if (it.hasNext()) { builder.append(it.next()); while (it.hasNext()) { builder.append(", ") .append(it.next()); } } builder.append("\n"); } System.out.println(builder);
prints
200 OK X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Date: Tue, 07 Jan 2014 16:06:45 GMT P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info." X-XSS-Protection: 1; mode=block Expires: -1 Alternate-Protocol: 80:quic Set-Cookie: NID=67=OIu8_xhcxE-UPCSfIoTINvRyOe4ALVhIqan2NUI6LMdRkSJHTPGvNkYeYE--WqPSEPK4c4ubvmjWGUyFgXsa453KHavX9gUeKdzfInU2Q25yWP3YtMhsIhJpUQbYL4gq; expires=Wed, 09-Jul-2014 16:06:45 GMT; path=/; domain=.google.ca; HttpOnly, PREF=ID=4496ed99b812997d:FF=0:TM=1389110805:LM=1389110805:S=jxodjb3UjGJSZGaF; expires=Thu, 07-Jan-2016 16:06:45 GMT; path=/; domain=.google.ca Content-Type: text/html; charset=ISO-8859-1 Server: gws Cache-Control: private, max-age=0
You can then get the InputStream
and print its content too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With