用webbrowser的navigate方法,可以通过指定参数来改变一些头部信息,比如HTTP_REFERER,但我试过指定cookie,却无法成功,想问一下能否这么指定我知道一个办法可以成功,但是有些麻烦,是通过调用js脚本来更改cookie

解决方案 »

  1.   

    procedure   Navigate(const   URL:   WideString);   overload;   
      procedure   Navigate(const   URL:   WideString;   var   Flags:   OleVariant);   overload;   
      procedure   Navigate(const   URL:   WideString;   var   Flags:   OleVariant;   var   TargetFrameName:   OleVariant);   overload;   
      procedure   Navigate(const   URL:   WideString;   var   Flags:   OleVariant;   var   TargetFrameName:   OleVariant;   var   PostData:   OleVariant);   overload;   
        
      procedure   Navigate(const   URL:   WideString;   var   Flags:   OleVariant;   var   TargetFrameName:   OleVariant;   var   PostData:   OleVariant;   var   Headers:   OleVariant);   overload;   
        
      Description   
        
      Use   Navigate   to   locate   and   download   a   specific   resource.   Navigate   can   send   an   HTTP   message   to   a   specified   URL   and   display   the   results   or   simply   display   the   results   of   a   specified   file.   
        
      URL   specifies   the   UNC   path   name   of   a   file   or   the   Uniform   Resource   Locator   of   an   Internet   resource   that   the   Web   browser   should   display.   
        
      Flags   is   a   set   of   values   that   specify   whether   to   add   the   resource   to   the   history   list,   whether   to   read   from   or   write   to   the   cache,   and   whether   to   display   the   resource   in   a   new   window.   It   can   be   a   sum   of   zero   or   more   of   the   following:   
        
      Constant Value Meaning     
        
      navOpenInNewWindow 1 Open   the   resource   or   file   in   a   new   window.   
      navNoHistory 2 Do   not   add   the   resource   or   file   to   the   history   list.   The   new   page   replaces   the   current   page   in   the   list.   
      navNoReadFromCache 4 Do   not   read   from   the   disk   cache   for   this   navigation.   
      navNoWriteToCache 8 Do   not   write   the   results   of   this   navigation   to   the   disk   cache.   
      navAllowAutosearch 16 If   the   navigation   fails,   the   Web   browser   attempts   to   navigate   common   root   domains   (.com,   .edu,   and   so   on).   If   this   still   fails,   the   URL   is   passed   to   a   search   engine.   
        
      TargetFrameName   is   the   name   of   the   frame   in   which   the   resource   will   be   displayed,   or   NULL   if   the   resource   should   not   be   displayed   in   a   named   frame.   
        
      PostData   contains   the   data   sent   to   the   server   when   using   Navigate   to   generate   an   HTTP   POST   message.   If   PostData   is   NULL,   Navigate   generates   an   HTTP   GET   message.   PostData   is   ignored   if   URL   does   not   specify   an   HTTP   URL.   
        
      Headers   contains   any   headers   sent   to   the   servers   when   the   URL   represents   an   HTTP   URL.   HTTP   headers   specify   such   things   as   the   intended   action   required   of   the   server,   the   type   of   data,   and   so   on.   (See   TWebRequest   object,   whose   properties   represent   many   of   the   more   common   headers).   
      

  2.   

    http://msdn2.microsoft.com/EN-US/library/aa385326.aspx
      

  3.   

    下面是我的测试代码:
    var
      ov,post: OleVariant;
      str: string;
      i: integer;
    begin
      str:='p2=哈哈';
      Post := VarArrayCreate([0, (Length(str) - 1)], varByte);
      for i := 0 to Length(str) - 1 do
        Post[i] := Ord(str[i + 1]);
      ov := 'Content-Type:application/x-www-form-urlencoded'+#13#10+'User-Agent:heihei'+#13#10+'COOKIE: ck=haha;';
      ie.Navigate('http://test/1.asp?p1=11',EmptyParam,EmptyParam,post,ov);
    end;提交后,根据1.asp可以看到效果,别的参数都可以,但是cookie无效
    不知是哪里有错误,还是cookie不允许这样构造
    谢谢大家