http请求头中回车换行符的问题

这段代码段创建了一个套接字,可以和本地HTTP服务器(127.0.0.1是指本地主机)进行通讯,发送一个HTTP请求,并从服务器接受响应,最后通过一个StringBuffer对象来保存响应并在控制台上打印出来。

http请求头和主体内容是通过CRLF分隔开来的(println()打印),对于HTTP请求格式来说,头部和主体内容之间有一个回车换行符(CRLF)是相当重要的。CRLF告诉HTTP服务器主体内容是在什么地方开始的。在一些互联网编程书籍中,CRLF还被认为是HTTP请求的第四部分。

现在的问题是这样的:用println()输出CRLF的话,请求能够正常响应。但是如果用out.print('\r');out.print('\n');就不行了,println()输出的到底是什么?求解答。

[code="java"]import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class TestSocket {
public static void main(String[] args) throws Exception{
Socket socket = new Socket("127.0.0.1", 8080);
OutputStream os = socket.getOutputStream();
boolean autoflush = true;
PrintWriter out = new PrintWriter(os, autoflush);
BufferedReader in = new BufferedReader(
new InputStreamReader( socket.getInputStream() ));

    // send an HTTP request to the web server
    out.println("GET /index.jsp HTTP/1.1");
    out.println("Host: localhost:8080");
    out.println("Connection: Close");
    // CRLF 
    out.println();

    // read the response
    boolean loop = true;
    StringBuffer sb = new StringBuffer(8096);
    while (loop) {
        if ( in.ready() ) {
            int i=0;
            while (i!=-1) {
                i = in.read();
                sb.append((char) i);
            }
        loop = false;
        }
        Thread.currentThread().sleep(50);
    }

    // display the response to the out console
    System.out.println(sb.toString());
    socket.close();
}

}[/code]

0
扫码支付0.1元 ×
其他相关推荐
关于(textarea)回车换行符在提交请求(URL)时消失的处理
关于(textarea)回车换行符在提交请求(URL)时消失的处理,有时候,我们在页面输入查询时,想多个同时查询,然后,回车隔开每个查询的内容。 后台只能收到字符串,没有回车换行符。 如下面的一个请求window.location = "${ctx}/post/cusQueryMailExport?customerId="+customerId +"&postTimeStart="+po
回车符,换行符的区别
回车符号和换行符号产生背景:     关于“回车”(carriage return)CR 和“换行”(line feed)LF 这两个概念的来历和区别。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字
HTTP header 响应头详解
有四种头标: 1.通用头标    既可用于请求有可用于响应,并且是作为一个整体而不是特定资源与事务相关联。 2.请求头标    允许客户端传递关于自身信息和希望的响应形式。 3.响应头标    服务器用于传递自身信息和响应。 4.实体头标    定义被传送资源的信息。既可用于请求,也可用于响应 头标以如下的单行形式发送。 : 其中 name是头标名,大小写敏感 v
HTTP请求头中各字段解释
HTTP请求头中各字段解释 Accept : 浏览器(或者其他基于HTTP的客户端程序)可以接收的内容类型(Content-types),例如 Accept: text/plain Accept-Charset:浏览器能识别的字符集,例如 Accept-Charset: utf-8 Accept-Encoding:浏览器可以处理的编码方式,注意这里的编码方式有别于字符集,这里的编码方式通常指gzip
利用ajax从jsp中返回的字符串时出现回车符号解决办法
问题背景:通过ajax来实现检测用户名,若用户名已存在,则提示已存在并且清空文本框;若不存在则提示可用。在checkname.jsp中写的时候,通过out.write();返回提示,在index.jsp中通过if语句判断返回的字符串情况,发现if总是执行了false的部分。于是将out.write();里的"fail"改为数字1,检测,失败。if中判断的是 "  =="1" ",改变方式,判断"
网络---一篇文章详解请求头Host的概念
我们知道Http请求头信息里面会带有一个Host字段,很多人不是很清楚这个字段具体的作用或者用法,包括我被很多人问过也曾经有些迷茫,这里具体扫盲下。我们知道一个IP地址可以对应多个域名,比如假设我有这么几个域名www.qiniu.com,www.taobao.com和www.jd.com然后在域名提供商那通过A记录或者CNAME记录的方式最终都和我的虚拟机服务器IP 111.111.111.111关
java中如何处理换行符
1.问题 windows平台的换行符为/r/n; linux平台的换行符为/n; java程序中如何将不同平台用户输入的换行符转换成特定系统的换行符. 2.解答 java 代码   String userInputString = userInput;    userInputString = userInputString.replaceAll...
Http请求头中请求
1、背景 今天用到HEAD方法,有必要对请求方法做一个了解。 根据HTTP标准,HTTP请求可以使用多种请求方法。 HTTP1.0定义了GET、POST和HEAD三种方法,也是我现在用到的三个方法。 HTTP1.1加了OPTIONS PUT DELETE TRACE和CONNECT方法。 2、HTTP方法具体 序号 方法                             ...
过滤字符串中换行、回车等字符
<br />哎,最近被项目折腾的,真想撞墙算了...<br />n多很老很老的框架,连个字符串都没过滤掉换行回车...<br />从xwork里面淘到一个办法:<br />org.apache.commons.lang.xwork.StringEscapeUtils.escapeJavaScript(String value);<br />也可以使用:<br />org.apache.commons.lang.StringEscapeUtils.escapeJavaScript(String value);
发送请求的参数值中含有类型为textarea的input框的值且当输入有回车换行时,md5加密生成sign验证失败,
1、解决办法是将原string字符串,转化为str.replace(/(\n|\r)/g,'\r\n'); 2、此方法也可用于安卓端和pc端用同一套接口时,安卓端和pc端验证后,再获取数据的时候换行格式存在改变的问题。
回车符与换行符的区别
\r是回车符,\n是换行符 计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。 但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。 要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。  于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。 一个叫做“回车”,告诉打字
JSON中换行符的处理
手机录入信息时,输入回车,在显示的时候,需要把回车换成br,这样就能正常实现了。 str.Replace("\n", "") 有的说替换\r\n,经测试无效,估计是电脑输入的时候产生。
Windows平台下写文件的回车换行问题
Windows平台下写文件的回车换行问题简介Windows平台VC开发环境下,使用C标准库fopen&fprintf&fclose的时候,编译器已经做好了回车换行的特殊处理,我们只需要简单使用\n即可。
UltraEdit回车换行问题
UltraEdit的换行问题
git使用中遇到的换行符问题总结
## git使用中遇到的换行符问题总结 #### 问题描述 项目组现在用git做版本控制,使用中遇到不同平台下换行符不同造成的问题,windows下的换行符为crlf,linux和MAX OS 下换行符是 lf。linux和MAX os就按说明设置为```core.autocrlf input```(貌似是默认值),windows设置为```core.autocrlf tr
mysql 去掉换行符,回车符
  1 去掉回车+换行 update test set logiccontent=replace(logiccontent, char(13)+char(10), ''); 2去掉回车 update test set logiccontent=replace(logiccontent, char(13), ''); 3去掉换行 update test set logiccontent=...
记事本中的回车换行问题
  我们知道回车换行在不同的系统中是不一样的,例如在dos/windows下是0d 0a,在Unix中是0a,在Mac中是0d。由于各种原因,我们可能会遇到一些“特殊”的回车换行,如0d 0d 0a。如果记事本打开了包含这样的回车换行的文件,那么在用户保存时,记事本可能会把0d 0d 0a删除掉。  经过本人小范围的测试(限于XP和2003),这个BUG出现的概率是50%左右,即每两台机器就有
通过ajax读取json格式数据字符串出现回车时出错问题解决
今天通过ajax读取数据库数据以json格式输出,但是有的数据能够成功,而且有的数据不能成功, 通过调试发现不成功的数据都是字符串有含有回车。通过以下方法在输出前将回车规换为空格, 问题终于得到解决。  remark=remark.replaceAll("\n","");  remark=remark.replaceAll("\r","");
linux系统下回车换行符
简述 回车换行符在文本文件的读写中经常用到,windows下面稍微复杂点,linux系统下更为简单。 详述 回车和换行是两个不同的概念。 回车,就是告诉计算机把头定位在左边界;换行,就是把头向下移动一行。 Windows中:回车符为’\r’,回到行首;换行符为’\n’,换到当前位置的下一行; Unix系统中:觉得每行结尾加两个字符没有必要,故结尾只有换行符,即‘\n’; Mac系统中:每行结尾只有...
http请求中请求头和响应头包含哪些内容
1)请求(客户端-&gt;服务端[request]) GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号) Accept: */*(客户端能接收的资源类型) Accept-Language: en-us(客户端接收的语言类型) Connection: Keep-Alive(维护客户端和服...
详细区分回车和换行的关系
今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决
git diff 换行符问题
这是由于换行符在不同的操作系统上定义的区别造成的。   Windows用CR LF来定义换行,Linux用LF。 CR全称是Carriage Return ,或者表示为\r, 意思是回车。 LF全称是Line Feed,它才是真正意义上的换行表示符。 如果用git diff的时候看到^M字符,就说明两个文件在换行符上有所差别。   下面简单的方法可以让gi
web工程前后台换行符传递与转义
该问题源自于一个数据展示问题, 后台文本中的换行符\n通过ajax请求反馈给前台, 前台解析json失败, 导致无法执行ajax的回调函数, 前台解析报错为: Uncaught SyntaxError: Unexpected token in JSON at position 101 产生该问题的表象为前台js以json格式解析返回串, 解析到转义符\, 但无法识别跟随的n, 从而认
git windows下换行符问题
背景 在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。Git提供了一个“换行符自动转换”功能。这个功能默认处于“自动模式”,当你在签出文件时,它试图将 UNIX 换行符
base64 加密处理后有回车换行符
base64一行不能超过76个字符,超过就会添加回车换行符。 解决办法: 使用字符串对象的replaceAll方法替换掉\r和\n,具体代码如下: replaceAll(&amp;quot;[\\s*\t\n\r]&amp;quot;, &amp;quot;&amp;quot;)
谈谈回车与换行,ANSI与UTF8
先来说说回车与换行,后面再谈谈ANSI编码和UTF8编码。 回车与换行 由一个问题说起,我在做一个项目的时候,用gdb调试,发现gdb执行和源码的行数不一致,排除了“-g -O0”编译优化的可能性后,因为看结果,gdb调试时候执行的顺序和源码固定差3行,就怀疑是否是windows和unix对回车和换行的处理不同导致的。后面验证了确实如此。 现在,就来说明这个事情。首先,我们要明确一点:我们提...
fgets 与 对回车符的处理
fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the
SVN自动处理不同系统下的回车换行符
有的时候需要跨系统开发。 文本类型的文件在不同的系统中带有不同的回车换行符。 比如windows下的0x0D0A,UNIX下的0x0A (关于不同回车换行符的由来,参见:http://blog.chinaunix.net/uid-23886490-id-3070861.html) 在这种情况下,可以通过配置SVN的属性来处理。 首先找到SVN配置文件: windows:%APP
Git处理换行符问题
在你通过github或者其他远程托管服务器来和其他人进行协同开发代码的时候,确保换行符被正确处理是一项很重要的事。
java字符之——回车换行
[b][size=large][color=green]前言[/color][/size][/b] 我们知道,任何字符在java中都是以数字存储的。 比如: char i = 97; System.out.print(i); 你将看到: a [b][size=large][color=green]正文 [/color][/size][/b] 在java中,回车符...
windows下脚本在linux运行换行问题
#!/bin/bash NOWDATE=`date +%Y%m%d` LOG_DIR=&quot;/data/logs/nginx&quot; LOG_PATH=${LOG_DIR}${NOWDATE} echo &quot;date:$NOWDATE&quot; echo &quot;LOG_DIR:$LOG_DIR&quot; echo &quot;LOG_PATH:&quot; echo ${LOG_PATH} 简简单单的代码,输出不是我想要的 d...
不同系统中的换行符,回车符 \r , \n
'\r'是回车,前者使光标到行首 '\n'是换行,后者使光标下移一格 unix下一般只有一个0x0A表示换行(&quot;\n&quot;), windows下一般都是0x0D和0x0A两个字符(&quot;\r\n&quot;), 苹果机(MAC OS系统)则采用回车符CR表示下一行(\r) Unix系统里,每行结尾只有“&amp;lt;换行&amp;gt;”,即“\n”; Windows系统里面,每行结尾是“&amp;lt;回车&amp;gt;&amp;lt;换行&amp;g...
java字符串过滤回车和换行符
newString = myString.replaceAll("(\r\n|\r|\n|\n\r)", "<br>");
HTML转义字符大全 (换行,enter,所有特殊字符)
ISO Latin-1字符集:  &#09; — 制表符Horizontal tab  &#10; — 换行Line feed  &#13; — 回车Carriage Return  &#32; — Space  ! &#33; — 惊叹号Exclamation mark  ” &#34; &quot; 双引号Quotation mark  # &#35; — 数字标志Number
<netty权威指南>笔记-以回车换行结尾的消息如何处理半包问题
概述TCP底层会发生粘包和拆包,这个是TCP的一个特性。为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据。TCP底层会根据缓冲区是否被填满了,来决定是否发送数据。但是从业务层面上看,这个是不合理的。因为一份业务数据可能很小,还不足以填满缓冲区,这样底层TCP就不会立刻把这份业务数据发送出去,而是等到好几份业务数据的大小填满缓冲
Java字符串过滤回车和换行符
原文地址:http://wjch-111.iteye.com/blog/2003880 Java代码   //第一种方式    import java.util.regex.Pattern;    import java.util.regex.Matcher;         // 4 different combinaisons    Pattern CRLF = Patte
Java 替换字符串中的回车换行符的方法
使用正则表达式进行替换: 代码片段: String documentTxt = EntityUtils.toString(entity,"gbk");//获取数据  documentTxt=documentTxt.replaceAll("[\\t\\n\\r]", "");//将内容区域的回车换行去除 说明:String类的replaceAll就有正则替换功能。 \t为制表符
php-解决回车换行符的转换问题-nl2…
\r\n是输出的HTML代码换行,客户看到的效果没有换行。 则相反 效果: 我是内容\r\n我是内容 我是内容 我是内容 ================================================== \r 表示:回车符(ACSII:13 或0x0d),就是我们常说的硬回车。 \n 表示:换行(ACSII:10 或0x0a),就是我们常说的软回车。 在页面里这两个是看
Java在windows和linux系统中的换行符问题
转自:https://blog.csdn.net/io105485_/article/details/79626380 在windows系统使用  String str = System.getProperty(&quot;line.separator&quot;); 可以正常换行; 但是部署到linux系统之后,打印出的txt文本换行消失; 网上吸取前辈经验之后用一下方法解决: String str = &quot;...
请问下afHttp网络访问怎么添加请求头和指定sessionId
rt; 请问下afHttp网络访问怎么添加请求头和指定sessionId
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 ios视频开发问题