51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2741|回复: 3
打印 上一主题 下一主题

[原创] 提交二进制数据请求后,如何保持服务器返回值依旧是二进制格式?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-7-22 10:53:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们的网站是使用二进制格式进行数据传输,目前我可以提交二进制数据到服务器,但是查看运行日志中的response内容,返回的二进制内容被解释成了ASCII码和中文,使用web_reg_save_param关联后进行编码转换也依然是乱码,不是需要的二进制数据,同时我也试了将关联的参数存入一个缓冲区,但是存入缓冲区的数据也不是需要的二进制数据,希望大家能够帮帮忙,多谢多谢

具体代码如下:

  1. int nPos = 0;
  2. char *pParam = NULL;
  3. char *pCode = "C63F4774747443E0884007A90B6C0603";

  4. pParam = (char*)malloc(44);

  5. *(int*)(pParam + nPos) = 38;
  6. nPos += 4;
  7. *(short*)(pParam + nPos) = 120;
  8. nPos += 2;
  9. *(int*)(pParam + nPos) = 0;
  10. nPos += 4;
  11. *(short*)(pParam + nPos) = 32;
  12. nPos += 2;
  13. memcpy(pParam + nPos,pCode,32);

  14. web_reg_save_param("Scode",
  15.         "LB/BIN=\r\n",
  16.         "RB/BIN=",
  17.         "Ord=1",
  18.         "Search=All",
  19.         LAST);

  20. web_custom_request("Login",
  21.     "URL=http://192.168.1.209/dll/dp.dll",
  22.     "Method=POST",
  23.     RAW_BODY_START,
  24.     pParam,
  25.     44,
  26.     RAW_BODY_END,
  27.     LAST);
复制代码
Replay log的内容为:
Action.c(105):     HTTP/1.1 200 OK\r\n
Action.c(105):     Content-Length: 16\r\n
Action.c(105):     Content-Type: application/octet-stream\r\n
Action.c(105):     Server: Microsoft-IIS/7.0\r\n
Action.c(105):     X-Powered-By: ASP.NET\r\n
Action.c(105):     Date: Fri, 22 Jul 2011 02:06:15 GMT\r\n
Action.c(105):     \r\n
Action.c(105): t=33733ms: 16-byte response body for "http://192.168.1.209/dll/dp.dll" (RelFrameId=1, Internal ID=24)
Action.c(105):     \n
Action.c(105):     \x00\x00\x00\x00\x00潠\x98\x00A\x00\x00\x00\x01\x06

Action.c(105): HTML parsing not performed for Content-Type "application/octet-stream" ("arseHtmlContentType" Run-Time Setting is "TEXT"). URL="http://192.168.1.209/dll/dp.dll"      [MsgId: MMSG-26548]
Action.c(105): Notify: Saving Parameter "Scode = \n\x00\x00\x00\x00\x00潠\x98\x00A\x00\x00\x00\x01\x06"
Action.c(105): web_custom_request("Login") was successful, 16 body bytes, 166 header bytes      [MsgId: MMSG-26386]

其中红色内容是需要的内容,一共16个字节。

请问各位,我如何能正确的获取到这16个字节的二进制数据?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2011-7-22 12:06:32 | 只看该作者
感觉LR会将二进制自己转成ASCII码,比如\r\n,我用wireshark获取到的数据时0d 0a,而我需要的数据的第一位就是0a,所以转化为了\n,而不是我所需要的\x0a。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2011-7-22 13:05:35 | 只看该作者
走http协议的2进制数据?干脆用socket来做吧
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-7-22 13:30:24 | 只看该作者
需要的数据已经取到了,正在研究怎么用socket来做,没用过socket这块,正在研究
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-14 11:56 , Processed in 0.067976 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表