{"id":6103,"date":"2016-12-20T19:39:15","date_gmt":"2016-12-21T00:39:15","guid":{"rendered":"http:\/\/appcrawler.com\/wordpress\/?p=6103"},"modified":"2016-12-21T17:03:33","modified_gmt":"2016-12-21T22:03:33","slug":"unexpected-end-of-file-from-server","status":"publish","type":"post","link":"http:\/\/appcrawler.com\/wordpress\/2016\/12\/20\/unexpected-end-of-file-from-server\/","title":{"rendered":"Unexpected end of file from server"},"content":{"rendered":"<p>The &#8220;java.net.SocketException: Unexpected end of file from server&#8221; exception is thrown in the HTTPClient class, as well as others.  This article simply provides an example of how to generate it for testing purposes.<\/p>\n<p>We start with a client class that will request a given URL from our custom python web server&#8230;<\/p>\n<pre>\r\nimport java.net.*;\r\nimport java.util.*;\r\n\r\npublic class javaUrl {\r\n  public static void main (String args[]) throws Exception {\r\n    URL url = new URL(\"http:\/\/localhost:9000\/t.html\");\r\n    URLConnection conn = url.openConnection();\r\n    Thread.sleep(2000);\r\n    System.out.println(url.getContent().toString());\r\n    Map<String, List<String>> map = conn.getHeaderFields();\r\n    for (Map.Entry<String, List<String>> entry : map.entrySet()) {\r\n      System.out.println(\"Key : \" + entry.getKey() + \" ,Value : \" + entry.getValue());\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>&#8230;which is shown below.  Notice that we accept the connection, but simply return from the method, returning no data associated with the URL we requested.  The specific exception is thrown because we did not return a complete HTTP response, which includes a content-type and a response code&#8230;<\/p>\n<pre>\r\nimport string,cgi,time\r\nfrom os import curdir, sep\r\nfrom BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer\r\n#import pri\r\n\r\nclass MyHandler(BaseHTTPRequestHandler):\r\n\r\n  def do_GET(self):\r\n    try:\r\n      f = open(\"t.html\") #self.path has \/test.html\r\n      return\r\n      self.send_response(200)\r\n      self.send_header('Content-type',  'text\/html')\r\n      self.send_header('Content-length',20000)\r\n      self.end_headers()\r\n      sr = f.read()\r\n      print sr\r\n      self.wfile.write(sr)\r\n      f.close()\r\n      return\r\n\r\n    except IOError:\r\n      self.send_error(404,'File Not Found: %s' % self.path)\r\n\r\ntry:\r\n  server = HTTPServer(('', 9000), MyHandler)\r\n  print 'started httpserver...'\r\n  server.serve_forever()\r\nexcept KeyboardInterrupt:\r\n  print '^C received, shutting down server'\r\n  server.socket.close()\r\n<\/pre>\n<p>The example of running this is shown below&#8230;<\/p>\n<pre>\r\n[adm-showard@cmhlcarchapp01 ~]$ java javaUrl\r\nException in thread \"main\" java.net.SocketException: Unexpected end of file from server\r\n        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:778)\r\n        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)\r\n        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:775)\r\n        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)\r\n        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1325)\r\n        at java.net.URLConnection.getContent(URLConnection.java:748)\r\n        at java.net.URL.getContent(URL.java:1055)\r\n        at javaUrl.main(javaUrl.java:8)\r\n[adm-showard@cmhlcarchapp01 ~]$\r\n<\/pre>\n<p>It should be noted that this differs from &#8220;java.net.SocketException: Connection reset&#8221; exception, as that is thrown when the client receives an actual RST packet from the target server.<\/p>\n<p>Below is the output from a wireshark session for a &#8220;java.net.SocketException: Unexpected end of file from server&#8221; exception&#8230;<\/p>\n<p><img alt='' class='alignnone size-full wp-image-6105 ' src='http:\/\/appcrawler.com\/wordpress\/wp-content\/uploads\/2016\/12\/img_58587b4066d7a.png' \/><\/p>\n<p>&#8230;and for a &#8220;java.net.SocketException: Connection reset&#8221; exception&#8230;<\/p>\n<p><img alt='' class='alignnone size-full wp-image-6106 ' src='http:\/\/appcrawler.com\/wordpress\/wp-content\/uploads\/2016\/12\/img_58587b5f126ff.png' \/><\/p>\n<p>Sources\/reason for the exceptions below are provided for clarity:<\/p>\n<p>*  return before a response code or headers, we get &#8220;java.net.SocketException: Unexpected end of file from server&#8221;.<br \/>\n*  return only a response code, we get &#8220;java.net.UnknownServiceException: no content-type&#8221;<br \/>\n*  return a content-type, but no response code, we get &#8220;java.io.IOException: Invalid Http response&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The &#8220;java.net.SocketException: Unexpected end of file from server&#8221; exception is thrown in the HTTPClient class, as well as others. This article simply provides an example of how to generate it for testing purposes. We start with a client class that&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"http:\/\/appcrawler.com\/wordpress\/2016\/12\/20\/unexpected-end-of-file-from-server\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[7,56,8,73],"tags":[],"_links":{"self":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/6103"}],"collection":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/comments?post=6103"}],"version-history":[{"count":5,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/6103\/revisions"}],"predecessor-version":[{"id":6110,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/6103\/revisions\/6110"}],"wp:attachment":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/media?parent=6103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/categories?post=6103"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/tags?post=6103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}