我用http访问一个网站,需要输入验证码,每次刷新验证码都要更换。现在我获得了这个验证码,提交数据,没有问题!
如果我开启多线程的话,怎么让多个http用各自的验证码
提交的时候不冲突呢。

解决方案 »

  1.   

    http会话一般是依靠Cookie来维持的,当第一次访问时,服务端会在Http的Head中返回Cookie信息,你在程序中要分析出并记住其值,在以后的再次访问时,要在Http的Head中带上此值。具体的格式,你可以用http捕获工具分析一下IE正常访问此网站的数据就清楚了。
      

  2.   

    TIdHTTP+TIdCookieManager就可以支持Cookie,但好不好用就不清楚了。
      

  3.   

    我能获取,分析了,
    不知道服务端的机制是什么,  用什么来记录  我输入的验证码。
    ---------------------------------
    服务端的机制不需要知道的。你照猫画虎,IE 首次请求时,收到什么,下次再请求,又发送了什么,模拟下来就行了。一般首次请求(jsp后台),服务端会返回类似 Set-Cookie: JSESSIONID=XXXXXXXX...,你分析出"XXXXXXXX..."来,在后续的请求中head里加上:Cookie: JSESSIONID=XXXXXXXX就行了。
    服务端就是通过这个Cookie携带的会话ID来判断“是否是同一个会话”的。TIdCookieManager我也没有用过,不过原理也是上面这样的,无非是自动解析http head,针对Cookie信息自动管理。
      

  4.   

    顺便说一下,如果会话是通过Cookie维持的,你“同时开十个ie ”,如果是十个ie 进程,则会话各不相干,如果是“十个ie 窗口,但只有一个ie进程”,其实是共用同一个会话的。这是IE 自己的机制,基于进程,但你的程序不必这样,开启多线程,每个线程可以使用自己的Cookie维持自己的会话。
      

  5.   

    是utf8编码的就是这样,需要用支持utf8的组件解码。