原理和GET是一样的。你是用组件吗?

解决方案 »

  1.   

    用的是NMHTTP控件的post方法,可是总返回空值,我是这样写的:
    nmhttp1.post('http://127.0.0.1/test.asp','name=aaa&&password=bbb');
    我的提交表单就这两项,在test.asp中让name和password显示,可返回的结果总是空
      

  2.   

    我也曾遇到过这个问题,后来找到的解决方法是将发送的数据写在一个文本文件中,由NMHTTP控件解析文件,将数据POST给ASP(可查看Delphi提供的帮助文档)具体演示代码如下:
    (1).将传送的数据写在tmp.txt中;
       格式:name=csdn&url=csdn.net&password=1232&helpid=id1234..........
    (2).Delphi实现代码:
      NMHTTP1.InputFileMode:=False;
      NMHTTP1.OutputFileMode:=True;  //此属性必须为True
      NMHTTP1.ReportLevel:=Status_Basic;
      NMHTTP1.Post('http://127.0.0.1/test.asp','tmp.txt');
      

  3.   

    to ccll: 这个tmp.txt的路径如何指定?
      

  4.   

    是不是还要说明其他的信息?
    比如head, content-type等,这在vc++中是要指定的
      

  5.   

    NMHTTP这个控件处理POST的方法有BUG,
    nmhttp1.post('http://127.0.0.1/test.asp','name=aaa&&password=bbb');
    直接这样使用你的asp收到的参数是name="aaa&&password=bbb",只有第一个参数了,因为他把你的参数多进行了一次URL编码
    参数放在文件中就没有这个问题。
    另外网络上有很多功能强大的控件,还有源码,完全可以不用这个破烂(它的网站上已经有很新的版本了,要钱的,这里的版本中应该还有其他问题,有没有源代码)
      

  6.   

    to netsong:文件的路径没有什么要求,可随便指定,如window\temp或您系统的当前路径等,同时可考虑文件使用完毕后,将其自动删除。
      

  7.   

    to sundy1: 那里可以找到这样的控件
      

  8.   

    to ccll: 可是我用了,系统错误:找不到tmp.txt文件
    ???
      

  9.   

    我用的是ICS的控件,你可以到作者的主页去看看
    http://www.rtfm.be/fpiette/indexuk.htm
      

  10.   

    to netsong:文件是自己建立的,你没创建,当然找不到!//一个例子
    procedure test;
    var
      fFile:TextFile;
    begin
      AssignFile(fFile,'tmp.txt');
      ReWrite(fFile);
      try
        //写文件操作
        writeln(fFile,<字符串>);
        .
        .
      finally
        Flush(fFile);
        CloseFile(fFile);
      end;end;
      

  11.   

    to ccll: 必须动态生成文件,不能用记事本写一个嘛?
      

  12.   

    to shprog: ccll的方法我试过了,可行,该给分了!
      

  13.   

    to ccll: 动态生成的文件也要指定路径呀,但是
             NMHTTP.Post中你没有指定路径,是指
             当前目录嘛?可是,我用记事本写了个
             文本放在当前目录下,却提示找不到文
             件???
      

  14.   

    to shprog:需要指定路径,你可以把文件放在当前路径或系统临时路径中。
      

  15.   

    post方式是有问题