我使用IdHttp post数据时.是要post一个memo组件的内容的.
这个memo里面的内容是:
111
222
333
然后.我post到一个页面.那么在这个页面显示的是111222333.
怎样才能让这个页面显示这样的结果?
111
222
333
当然.这个页面是没有问题的.它支持这个带格式的显示..
下面是我的代码.
procedure TForm1.Button3Click(Sender: TObject);
var
  Url,s : string;
  Response : TStringStream;
  Request : TStrings;
begin
    Response := TStringStream.Create('');
    try
      Request := TStringList.Create ;
      try
        s := 'logname=csz&password=123&mem='+Memo1.Text;
        Request.Append(s);
        Url:='Http://127.0.0.1/add.asp'
        IdHTTP1.Request.ContentType :='application/x-www-form-urlencoded';
        IdHTTP1.Post(Url,Request,Response);
        Memo1.Lines.Text := Trim(Response.DataString);
      finally
        Request.Free ;
      end;
    finally
      Response.Free ;
    end;
end;

解决方案 »

  1.   

    uses IdMultipartFormData; { .... } procedure TForm1.Button1Click(Sender: TObject); 
    var 
      data: TIdMultiPartFormDataStream; 
    begin 
      data := TIdMultiPartFormDataStream.Create; 
      try 
        { add the used parameters for the script } 
        data.AddFormField('param1', 'value1'); 
        data.AddFormField('param2', 'value2'); 
        data.AddFormField('param3', 'value3');     { Call the Post method of TIdHTTP and read the result into TMemo } 
        Memo1.Lines.Text := IdHTTP1.Post('http://localhost/script.php', data); 
      finally 
        data.Free; 
      end; 
    end;
      

  2.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      Url,s : string;
      Response : TStringStream;
      Request : TStrings;
    begin
        Response := TStringStream.Create('');
        try
          Request := TStringList.Create ;
          try
            s := 'logname=csz&password=123&mem='+Memo1.Text;
            Request.Append(s);
            Url:='Http://127.0.0.1/add.asp'
            IdHTTP1.Request.ContentType :='application/x-www-form-urlencoded';
            IdHTTP1.Post(Url,Request,Response);
            Memo1.Lines.add(Trim(Response.DataString));
          finally
            Request.Free ;
          end;
        finally
          Response.Free ;
        end;
    end;
      

  3.   

    借贵地一问:怎样用idHTTP获得下载来的图片的二进制数据????你的问题正解是要修改网页的ASP/CGI源程
      

  4.   

    获得数据.一般都是在
    IdHTTP1.Post(Url,Request,Response);
    这个Response.DataString就是存储了返回的数据.继续顶..
      

  5.   

    不对..不是网页的问题.网页是没有问题的..手动通过填写网页的提交表单.提交后.显示的是带格式的.但通过软件提交上去就不可以.
    我已经试了很多的网站.提交的都是不带格式的.都是提交成了一行(不分行.不带格式).
    以前是解决了这个问题.是idhttp组件的事.但现在忘记怎么处理的了..
      

  6.   

    网页方面的没有弄过,修改你的代码如下,试试看吧,不一定好用
    procedure TForm1.Button3Click(Sender: TObject);
    var
      Url,s : string;
      Response : TStringStream;
      Request : TStrings;
      I: Integer;
    begin
        Response := TStringStream.Create('');
        try
          Request := TStringList.Create ;
          try
            s := 'logname=csz&password=123&mem='+Memo1.Text;
            for I := 0 to Memo1.lines.Count - 1 do
            begin
              S := S + Memo1.Lines[I] + '<br>';  //
            end;
            Request.Append(s);
            Url:='Http://127.0.0.1/add.asp'
            IdHTTP1.Request.ContentType :='application/x-www-form-urlencoded';
            IdHTTP1.Post(Url,Request,Response);
            Memo1.Lines.Text := Trim(Response.DataString);
          finally
            Request.Free ;
          end;
        finally
          Response.Free ;
        end;
    end;
      

  7.   

    解决了.把post除去的内容中的字符进行替换
    #13='<br>'
    ' '='%20'
    这样.通过idhttp的编码.web页面就可以显示正常带简单格式的文本了.
      

  8.   

    POST参数数据带换行,把#13(字符) 转成 '%13'(字符串),把#10(字符) 转成 '%10'(字符串),Apche和IIS都什么自已转回来。