问题出现在我需要发送的一个网页封包上,举例:
  该封包我截取的是: 00 03 6C 69 73 74  根据ASCII码翻译后4个是 list ,前2位 00 03 不是具体字符问题1:以往我都使用 inet 控件发送封包,比如Inet1.Execute SendURL, "POST", Send, SendHeard 异步发送,都很顺利,但是以往只遇上发送如 6C 69 73 74 这种的完全可翻译的,就是直接发送 Send = "list" 就可以了,请问现在这种前面带有2个字符的如何翻译成字符串发送呢,inet 控件有办法直接发送字节数组吗?像winsock那样?我尝试过将以上截取的写入 BinBufff 字节数组后使用UTF8的函数转换,结果也是无法发送成功问题2:将以上截取的写入 BinBufff 字节数组后可以直接使用 winsock 发送成功,问题又出现了。。winsock需要自己写 cookie,我根据 webbrowser1.Document.cookie 里取出的cookie 不带有一个网页带有的 JSESSIONID=XXXXXX 字段,我手动补充好 JSESSIONID 字段后,该封包可以成功发送, 请问 如何取得 JSESSIONID ..(百度GOOGLE无数无解中..) ,发现直接使用 inet控件发送的封包自动带有的 cookie 里带有 JSESSIONID字段,通过 webbrowser获取的cookie里为什么没带上该ID呢有什么方法能获取吗问题3:00 03 6C 69 73 74 00 84  如这封包..带有 84,ASCII里超过128的好像在VB都是空的,十六进制的84转成十进制就是 132, 这种情况下。。 inet 又如何翻译成字符串来发送呢?
    写的有点乱不好意思哈,总的说就是。。只要能让我把这包包给发出去就好。。 inet或者winsock都行... 主要遇上的问题就是上面3点,请教各位大大们~ PS:GOOGLE百度一天了..哭....

解决方案 »

  1.   

    估计是用 URL 转义符 %,后面跟两个 16 进制数:
    00-03-6C-69-73-74 -> %00%03list
      

  2.   

    LS的,我说的是用INET控件发送的数据包呀,就是将16进制转换为INET控件可识别的字符串发送才行好像,问题就是某些16进制就是无法转换成字符串不知是否还有人知道以上我提的问题的解决方法呢。。又找了一天了还是无果或者,有方法能 截获程序本身webbrowser发送出去的数据包,或者INET发送出去的数据包吗?我想直接截获发出去的包(里面的cookie带有我所需要的JSESSIONID)
      

  3.   

    下层发送/接收之负责收发数据,只要数据符合一定的要求(可见的Ascii字符+回车换行之类的控制字符)即可。
    至于在有效字符之外的字符,就需要上层程序约定规则,发送前将无效字符进行编码、接收后进行解码,这样就能通过下层的发送/接收进行通讯了。
    我上面提到的转义符 % 方式就是其中的一种适用于 URL 的约定规则。
    具体要看你对方的上层了,它既然能处理带有 00 84 之类字符的数据,必定有相应的编码约定,比如 Base-64 之类的。