51Testing软件测试论坛

标题: 提交二进制数据请求后,如何保持服务器返回值依旧是二进制格式? [打印本页]

作者: 高保真    时间: 2011-7-22 10:53
标题: 提交二进制数据请求后,如何保持服务器返回值依旧是二进制格式?
我们的网站是使用二进制格式进行数据传输,目前我可以提交二进制数据到服务器,但是查看运行日志中的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个字节的二进制数据?
作者: 高保真    时间: 2011-7-22 12:06
感觉LR会将二进制自己转成ASCII码,比如\r\n,我用wireshark获取到的数据时0d 0a,而我需要的数据的第一位就是0a,所以转化为了\n,而不是我所需要的\x0a。
作者: 云层    时间: 2011-7-22 13:05
走http协议的2进制数据?干脆用socket来做吧
作者: 高保真    时间: 2011-7-22 13:30
需要的数据已经取到了,正在研究怎么用socket来做,没用过socket这块,正在研究




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2