在delphi中使用webbrowser发送一个连接,网站接收后返回一个状态码显示在webbrowser中,如何获取这个状态码?例如:发送连接:http://sms.api.bz/fetion.php?username=用户名&password=密码&sendto=用户&message=内容
然后如果用户名或者密码错误,网站就返回‘101’这个状态码
如何获取这个‘101’呢?

解决方案 »

  1.   

    你可以获得webbrowser的html代码,从里面自己找
      

  2.   

    那种返回一般都是xml格式,很好分析的,用idhttp也可以直接post返回xml信息
      

  3.   

    回复:bdmh谢谢你,搞定了,就是你说的方法,获取html代码就可以了。下面是代码,分享一下
    function GetHtml(const WebBrowser:TWebBrowser):string;
    const
      BufSize=$10000;
    var
     Size:Int64;
     Stream:IStream;
     hHTMLText:HGLOBAL;
     psi:IPersistStreamInit;
    begin
      if not Assigned(WebBrowser.document) then Exit;
      OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit,psi));
      try
        hHTMLText:=GlobalAlloc(GPTR,BufSize);
        OleCheck(CreateStreamOnHGlobal(hHTMLText,True,Stream));
        try
          OleCheck(psi.Save(Stream,False));
          Size:=StrLen(PChar(hHTMLText));
          SetLength(Result,Size);
          CopyMemory(PChar(Result),Pointer(hHTMLText),Size);
        finally
          Stream:=nil;
        end;
      finally
        psi:=nil;
      end;end;procedure TForm1.wb1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var
      strcode:Word;
    begin
       strcode:=0;
       if wb1.Application=pDisp then
       strcode:=StrToInt(GetHtml(wb1));   case strcode of
         100: mmo1.Text:='测试结果:发送成功';
         101: mmo1.Text:='测试结果:验证失败';
         102: mmo1.Text:='测试结果:短信不足';
         103: mmo1.Text:='测试结果:操作失败';
         104: mmo1.Text:='测试结果:非法字符';
         105: mmo1.Text:='测试结果:内容过多';
         106: mmo1.Text:='测试结果:号码过多';
         107: mmo1.Text:='测试结果:频率过快';
         108: mmo1.Text:='测试结果:号码内容空';
         109: mmo1.Text:='测试结果:账号冻结';
         110: mmo1.Text:='测试结果:禁止频繁单条发送';
         111: mmo1.Text:='测试结果:系统暂定发送';
         120: mmo1.Text:='测试结果:系统升级';
       else
         mmo1.Text:='测试结果:未知错误';
       end;end;