`
SwiftHorse
  • 浏览: 213657 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

使用控件IdHttp遇到的奇怪现象

阅读更多

今天为了实现论坛自动登录发贴,作了如下尝试:

asp代码说明:
登录页面为:login.asp
要提交的表单两个:txt_user,txt_password

登录后提交的页面是:login_check.asp,该页面我的测试代码简单的只有以下:
username=trim(Request.Form("txt_user"))
  response.write "username=" & username

password=trim(Request.Form("txt_password"))
  response.write "password=" & password

--------------------------DELPHI代码如下(希望通过IDHTTP的POST方法实现自动登录)----------------------
procedure TForm1.Button2Click(Sender: TObject);
const
  BaseURL  = 'http://192.168.2.25/test/';     //论坛所在地址
  UserName = 'sa';    //登录用户名
  Password = '123';    //登录密码
var
  Params: TStrings;
  HTML: String;
  MD5Pass: String;
  ret:tstringstream;
begin
  Params:=TStringList.Create;
  ret:=TStringStream.Create('');
  try
    Params.Clear;
    Params.add('txt_user='+UserName);
    Params.Add('txt_password='+Password);

    IDHttp.HandleRedirects := true;
    IdHTTP.request.contenttype:='application/x-www-form-urlencoded'; 

    IdHTTP.Request.Referer := BaseURL + 'login.asp';
    IdHTTP.Post(BaseURL+'login_check.asp',Params,ret);

    HTML:=ret.datastring;
    Memo1.Lines.Text := HTML;
    if Pos(BASEURL+cars.asp',HTML)=0 then  //cars.asp是登录成功后会转向的页面
    begin
      ShowMessage('登录失败');
      Exit;
    end;
  finally
    Params.Free;
  end;
end;

------------------

问题:按正常ASP应该是得到如下内容
         username=sa
                  password=123

但实际遇到的问题是username=satxt_password=123
                  password=

不解!!!!!!为什么我传的是两个参数,但程序却把两个参数当作了一个参数是不是IDHTTP控件有BUG?
清醒一下,写篇博客再思考问题可能出在哪里。

 

分享到:
评论
3 楼 haojielyb 2007-12-24  
我跟你的方法一样 为什么 我的值 就是 传不过去啊
2 楼 longaiqun001 2007-07-12  
1 楼 SwiftHorse 2007-07-10  
  休息了几分钟,总是得以解决,看来还是要注意调整。
  
    问题出在DELPHI代码:
  这是原来代码的:
  Params.add('txt_user='+UserName);
  Params.Add('txt_password='+Password);
  修改为以下代码(仅在第二个参数加了一个&):
  Params.add('txt_user='+UserName);
  Params.Add('&txt_password='+Password);

相关推荐

    Delphi使用IdHTTP控件操作Cookies的例子.rar

    在Delphi编程环境中,IdHTTP控件是一个非常重要的组件,用于执行HTTP请求,如GET、POST等。在处理网络通信时,特别是在与Web服务器...希望这个示例能帮助你在Delphi开发过程中更好地理解和使用IdHTTP控件处理Cookie。

    使用delphi XE的IdHTTP控件POST的例子

    下面是一段使用`IdHTTP`进行POST的示例代码: ```delphi uses IdHTTP, IdTCPClient, IdBaseComponent, IdComponent; var HTTP: TIdHTTP; TCPClient: TIdTCPClient; Params: TStrings; begin // 创建并初始化...

    使用IdHttp下载文件并显示下载进度条

    使用IdHttp下载文件并显示下载进度条,下载进度采取windows消息通知的方式来显示

    idhttp多线程模拟登录实例

    `.cfg`可能包含项目的配置信息,`.dcu`是编译后的单元文件,`.ddp`是项目文件,保存了项目设置和依赖关系,`.dfm`则是界面设计文件,记录了窗口和控件的布局。`.dll`文件(如`md5.dll`)可能包含MD5加密算法的实现,...

    idhttp 使用代理访问

    标题 "idhttp 使用代理访问" 暗示了这是一个关于在 Delphi 开发环境中使用 Indy HTTP 客户端组件通过代理服务器进行网络访问的主题。Indy 是一个流行的开源网络组件库,广泛用于 Delphi 和 C++Builder 开发者中,...

    利用IDHTTP多次获取网页代码

    本篇文章将深入探讨如何利用`IDHTTP`来多次获取网页代码,并针对可能出现的问题提供解决方案。 首先,`IDHTTP`是Indy库中的一个组件,它提供了对HTTP协议的支持,允许开发者发送各种HTTP请求(如GET、POST等)并...

    delphi 7 idhttp post 的8种使用方法

    本文将深入探讨IDHTTP组件在POST请求中的8种使用方法,帮助开发者更好地理解和利用这个强大的工具。 1. **基本POST请求** IDHTTP组件最简单的POST请求可以通过设置其 `Method` 属性为 `htPost`,然后调用 `Execute...

    idhttp六种post方法

    本示例聚焦于Delphi7环境下使用Indy库中的IDHTTP组件实现六种不同的POST方法。IDHTTP是Indy提供的一款强大的HTTP客户端组件,它允许开发者发送各种HTTP请求,包括GET、POST等。 首先,我们来详细解释POST方法。POST...

    IdHTTP控件操作Cookies的DELPHI实例..rar

    3. **读取和检查Cookies**:可以使用`CookieManager`的`Cookies`属性访问已存储的Cookies。这返回一个`TIdCookieCollection`,你可以遍历这个集合以查看或修改Cookies。 ```delphi for Cookie in IdHTTP.Cookie...

    使用idhttp做的投票软件源码

    1. **IDHTTP组件的使用**:IDHTTP组件是Delphi Indy库中的核心组件之一,用于发起HTTP请求。通过设置其属性,如Host(目标服务器地址)、Port(端口号)、Request.Method(HTTP方法,如GET或POST)等,可以定制HTTP...

    Idhttp SSl 网站

    标题中的“Idhttp SSL 网站”指的是在Delphi编程环境中使用Indy库的IDHTTP组件进行HTTPS(SSL/TLS)通信时遇到的问题。IDHTTP是Delphi中用于发送HTTP请求的组件,而SSL(Secure Socket Layer)或其升级版TLS...

    Delphi Xe10 使用Idhttp get 新浪股票API

    ### Delphi Xe10 使用 IdHTTP GET 新浪股票 API #### 概述 本篇文章主要介绍了如何在 Delphi Xe10 开发环境中利用 Indy 库中的 `TIdHTTP` 控件发起 HTTP GET 请求来获取新浪股票 API 接口的数据。通过这种方式,...

    IdHTTP控件操作Cookies的DELPHI实例.rar

    这个实例主要探讨如何使用`TIdHTTP`控件处理Cookies,这对于开发需要与服务器进行交互,尤其是涉及到用户登录状态保持的应用至关重要。在Web应用开发中,Cookies通常被用来存储用户会话信息,如登录状态、个性化设置...

    delphi idhttp 循环 Post

    下面将详细解释如何使用Delphi的IDHTTP组件进行循环POST操作。 首先,我们需要了解IDHTTP组件的基本用法。在Delphi中,打开一个新的VCL Forms应用程序,然后从Tool Palette的Internet类别中拖一个IDHTTP组件到Form...

    利用idhttp进行多线程下载 修正版

    利用idhttp进行多线程下载,带进度条显示,可以暂停下载和继续下载,未使用第三方控件,在delphi xe7下测试通过。 昨天发的代码发现一个bug,就是无论几线程,都是从文件首部开始下载,才发现xe7下idhhtp控件的...

    D7_IDHTTP访问HTTPS所需DLL.rar

    在使用过程中,你可能还会遇到SSL/TLS版本不兼容或证书验证问题。这时,你可能需要调整`IDHTTP`的`SSLOptions`属性,比如设置`SSLOptions.SSLVersions`接受特定的SSL/TLS版本,或设置`SSLOptions.VerifyMode`和`...

    IdHTTP应用实例

    在IT行业中,Delphi是一种流行的面向对象的编程环境,它基于Pascal语言并以其强大的Windows应用程序开发能力而闻名。...了解和熟练掌握IdHTTP控件的使用,对于进行网络通信的Delphi应用开发至关重要。

    delphi操作IdHTTP报头读写

    更高级的使用场景,比如设置自定义认证、处理Cookie、代理设置等,也可以通过IdHTTP的Request和Response属性实现。例如,设置HTTP基本认证: ```delphi IdHTTP.Request.BasicAuthentication := True; IdHTTP.Request...

    DELPHIXE10.3.1 做IDHTTP开发SSL时,提示使用的2个DLL文件 libeay32.DLL 和 ssleay32.DLL 亲测可用

    在使用IDHTTP组件进行SSL连接时,如果系统缺少这些DLL文件,程序可能无法正确识别和使用SSL/TLS,从而导致错误或连接失败。将这两个文件添加到系统的路径或者应用程序的运行目录下,可以确保IDHTTP在尝试建立SSL连接...

    delphi 7 idhttp post 的8种使用方法(含源码)

    本教程将详细阐述IDHTTP组件进行POST请求的8种不同方法,每种方法都有其特定的用途和适用场景。下面,我们将逐一介绍这些方法,并提供源码示例。 1. **基本POST请求** 最简单的POST请求可以通过设置IDHTTP的...

Global site tag (gtag.js) - Google Analytics