协议之跨平台的疑惑

[ 2081 查看 / 2 回复 ]

我们或多或少都会接触到协议,而且协议本身也是 形形色色 五花八门 不一而足。先看上午发文的代码,为了整改这个代码,我代表公司的java组与c++部门进行联调,搞到昨晚10点。
  1. public void write(String message, List<? extends Object> recipients) {
  2.                 int length = message.getBytes().length + 1;
  3.                 String httpHeader = "POST /sns HTTP/1.1\nContent-Length:" + length
  4.                                 + "\n\n";
  5.                 logger.info(httpHeader + message);
  6.                 session.write(httpHeader + message);
  7.         }
复制代码
粗看,这个代码貌似没有问题,用单元测试(所以经典的说法是,单元测试并不表示你的代码都是对的,而仅仅表示‘代码没有出错’  ——换言之,莫以为单元测试是万能的,只是没有单元测试是万万不能)也能跑出如下的结果。
  1. POST /sns HTTP/1.1
  2. Content-Length:294

  3. <?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Body xmlns:m="http://www.example.org/stock"><m:GetStockPrice><m:StockName>IBM</m:StockName></m:GetStockPrice></soap:Body></soap:Envelope>
复制代码
本主题由 管理员 hhjjj444 于 2010-1-16 19:35:31 执行 主题置顶/取消 操作
TOP

手头并没有工具,其实很想将这段代码放到linux下面跑一下。因为后来查询http协议发现,对于回车换行,http的规定比较严格,必须是\r\n,如果仅仅是一个\n,在windows下面ok没问题,但是http协议却认为有问题。。而且不巧的是,项目真正联测的时候,用的环境是linux,而且底层的平台还是c++..可见在异构环境下,遵循协议的标准是一件多么重要的事情。

谨记录之,以自我警示。
TOP