Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用套接字的HTTP响应上的随机字符_Java_Http_Sockets_Httpresponse - Fatal编程技术网

Java 使用套接字的HTTP响应上的随机字符

Java 使用套接字的HTTP响应上的随机字符,java,http,sockets,httpresponse,Java,Http,Sockets,Httpresponse,我使用套接字创建对给定服务器的POST请求。响应返回时基本正常,我使用编码为“UTF-8”的InputStream从服务器读取响应。大多数响应都是有意义的,而且我能够正确地查看HTML,但是,似乎是随机的,我看到诸如“1ffa”、“6e8”、“1972”、“90”、“0”之类的代码在响应中显示为单行。下面是我如何创建和读取响应 String hostname = "server"; SocketFactory socketFactory = SSLSocketFactory.ge

我使用套接字创建对给定服务器的POST请求。响应返回时基本正常,我使用编码为“UTF-8”的InputStream从服务器读取响应。大多数响应都是有意义的,而且我能够正确地查看HTML,但是,似乎是随机的,我看到诸如“1ffa”、“6e8”、“1972”、“90”、“0”之类的代码在响应中显示为单行。下面是我如何创建和读取响应

    String hostname = "server";
    SocketFactory socketFactory = SSLSocketFactory.getDefault();
    Socket socket = new Socket(hostname, 8080);
   // Create streams to securely send and receive data to the server
    InputStream in = socket.getInputStream();
    OutputStream out = socket.getOutputStream();
    PrintWriter writer = new PrintWriter(out);
    writer.println("POST /handlerServlet http/1.1");
    writer.println("Host: " + hostname);
    String parameters="params=" + URLEncoder.encode("paramsToEncode", "UTF-8"); 
    writer.println("Content-Length: " + parameters.length());
    writer.println("Content-Type: application/x-www-form-urlencoded");
    writer.println("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    writer.println("Keep-Alive: 115");
    writer.println("Connection: keep-alive");
    writer.println("\r\n" + parameters + "\r\n");
    writer.flush();
    // Read from in and write to out...
    String input = "";
    BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
    StringBuffer result = new StringBuffer();
    boolean startWriting = false;
    FileOutputStream outStream1 = new FileOutputStream(new File("/file1.txt"));
    Writer outWriter = new OutputStreamWriter(outStream1, "UTF-8");

    while ( (input = reader.readLine()) != null) {
    result.append(input);
    outWriter.write(input + "\n");
    result.append('\n');
    }
    System.out.println(result.toString());
    outWriter.close();
    // Close the socket
    in.close();
有人知道我为什么会看到这样的人物吗

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://server:8080/HW/YX+JpCEnNDe5B87CCyFj5KR7z9rqlwRK77aMm/44221331.htm">

1ffa

<meta http-equiv="Content-Type"  content="text/html; charset=ISO-8859-1">
<title></title>
</head>
<body bgcolor="#ffffff">
<!-- Created by Oracle Reports 21:14 Tue Jun 29 09:14:32 PM, 2010 -->
....
<tr valign=top>
  <td height=10></td>
  <td width=80 colspan=3 align=center><font size=2 face="helvetica">V002A050001</font></td>
  <
1ffa
td></td>
Transfer-Encoding: chunked

1ffa
....
V002A050001
<
1ffa
td>
如您所见,让这些字符出现在随机位置可能会导致HTML代码中出现一些hecktick行为


谢谢。

您的回复中是否有这样的标题

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://server:8080/HW/YX+JpCEnNDe5B87CCyFj5KR7z9rqlwRK77aMm/44221331.htm">

1ffa

<meta http-equiv="Content-Type"  content="text/html; charset=ISO-8859-1">
<title></title>
</head>
<body bgcolor="#ffffff">
<!-- Created by Oracle Reports 21:14 Tue Jun 29 09:14:32 PM, 2010 -->
....
<tr valign=top>
  <td height=10></td>
  <td width=80 colspan=3 align=center><font size=2 face="helvetica">V002A050001</font></td>
  <
1ffa
td></td>
Transfer-Encoding: chunked

在这种情况下,很可能是由于。这是正常的。

…您应该根据响应标题对其进行不同的处理。由于另一端显然是一个
Servlet
,您也可以预先设置
内容长度
头,以避免它将正文分块发送。您可以使用
response.setContentLength()
实现这一点。事实上,设置内容长度是一个很好的解决方法。我还建议使用现有的HTTP客户机库(除非有限制)。周围有很多,他们往往处理得很好。你为什么不使用或?他们处理这件事更加透明。