SocketException: Unexpected end of file from server 问题解决
2017-08-11 14:59
2743 查看
最近使用elasticsearch,通过http访问,结果报错。最后发现是因为设置http消息内容格式type设置错了。发送http请求的方法如下:
报错如下:
后面发现上面建立http请求的httpRequest方法中是有一句代码是关键:
connection.setRequestProperty("Content-type", "application/json");
我之前写成 connection.setRequestProperty("Content-type", "JSON");所以一直报错。
后面改成connection.setRequestProperty("Content-type", "application/json");就好了。
这个错误对于低版本的ES好像没问题,例如V2.1.2, V5.2.1都没问题。对于ES5.4.3有问题。应该是高版本的ES对于http请求格式加强了校验。
public static String httpRequest(String urlStr, String content, String requestMethod) throws IOException { URL url = new URL(urlStr); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod(requestMethod); connection.setUseCaches(false); connection.setConnectTimeout(1000 * 5);//5秒 connection.setReadTimeout(1000 * 60);//1分钟 connection.setInstanceFollowRedirects(true); connection.setRequestProperty("Content-type", "application/json"); connection.setRequestProperty("Authorization","esmadmin"); connection.connect(); Writer writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8")); if (content != null && !"".equals(content)) { writer.write(content); } writer.flush(); writer.close(); InputStream in = null; if (connection.getResponseCode() >= 400) { in = connection.getErrorStream(); } else { in = connection.getInputStream(); } BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String tmp; while ((tmp = bufferedReader.readLine()) != null) { response.append(tmp); } if (in != null) { in.close(); } bufferedReader.close(); connection.disconnect(); return response.toString(); }
报错如下:
2017-08-11 08:00:00,441 pool-97-thread-1 ERROR [com.jd.jsf.worker.thread.es.timingTask.TimingTaskRunnableThread:run] - Unexpected end of file from server java.net.SocketException: Unexpected end of file from server at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:792) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:789) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1535) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) at com.jd.jsf.worker.util.SimpleHttpClient.request(SimpleHttpClient.java:126) at com.jd.jsf.worker.util.SimpleHttpClient.put(SimpleHttpClient.java:104) at com.jd.jsf.worker.thread.es.timingTask.TimingTaskRunnableThread.run(TimingTaskRunnableThread.java:80) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
后面发现上面建立http请求的httpRequest方法中是有一句代码是关键:
connection.setRequestProperty("Content-type", "application/json");
我之前写成 connection.setRequestProperty("Content-type", "JSON");所以一直报错。
后面改成connection.setRequestProperty("Content-type", "application/json");就好了。
这个错误对于低版本的ES好像没问题,例如V2.1.2, V5.2.1都没问题。对于ES5.4.3有问题。应该是高版本的ES对于http请求格式加强了校验。
相关文章推荐
- java.net.SocketException: Unexpected end of file from server 异常解决
- java.net.SocketException: Unexpected end of file from server 异常解决
- centos解决Received unexpected end-of-file from SFTP server
- 解决Fatal:Received unexpected end-of-file from server
- syntax error : unexpected end of file 问题的解决
- 如何解决unexpected end of file while looking for precompiled header directive的问题
- 解决执行脚本报syntax error: unexpected end of file或syntax error near unexpected token `fi'错误的问题
- 【问题解决】syntax error: unexpected end of file或-bash: ./full_build.sh: /bin/bash^M: bad interpreter: No
- 如何解决unexpected end of file while looking for precompiled header directive的问题
- java.net.SocketException: Unexpected end of file from server
- 如何解决unexpected end of file问题 c++很简单的进制转换函数
- 线上事故:Unexpected end of file from server
- 如何解决unexpected end of file while looking for precompiled header directive的问题
- java.net.SocketException: Unexpected end of file from server
- 出现此问题的解决方法: unexpected end of file while looking for precompiled header directive
- java.net.SocketException: Unexpected end of file from server
- java.net.SocketException: Unexpected end of file from server
- [置顶] java微信退款unexpected end of file from server
- Linux使用SFTP登陆时报错:Received unexpected end-of-file from SFTP server
- java.net.SocketException: Unexpected end of file from server