最近遇到了个问题,昨天困扰到3点也没弄好,请大侠帮忙看看。在delphi中我用tidhttp模拟网页post 主要代码如下:
        var
  idhttp1:TIdHTTP;
  paramlist:TStringList;
  webcookies:string;  //网页cookies
   contentstr:string;//提交的内容
  i,j:integer;
  res:string;
      begin
            idhttp1:=TIdHTTP.Create(nil);
             WEBCooKies :=(Form1.WebBrowser1.document as ihtmldocument2).cookie;
            IdHTTP1.Request.CustomHeaders.Text := 'Cookie: ' + WEBCooKies;
            IdHTTP1.Request.Referer:='http://119.23.145.23/sms.jsp';
            paramlist:=tstringlist.Create;
             paramlist.Values['arecid']:='zjj';
             paramlist.Values['arecname']:='';
             paramlist.Values['content']:=contentstr;//提交的内容
             paramlist.Values['title']:='';
             paramlist.Values['sendtime']:='';
             paramlist.Values['Sbumit3']:='发送';
           res:=IdHTTP1.Post('http://119.23.145.23/addMessage.do',paramlist);
          end;      提交的内容正常情况下是没有问题,不过,当内容中含有&的时候,&后面的内容就会被截掉。请大虾们帮忙看看有什么解决办法。
       

解决方案 »

  1.   

    参考,看看是不是有你的情况
    http://blog.csdn.net/renjiandefeng/article/details/5823808
      

  2.   

    加上HTTPEnCode试试
    例如:paramlist.Values['title']:=HTTPEnCode('&title');
      

  3.   

    2L的方法 &编码后变成%26 传过去后内容就变成%26 不会再变回&
      

  4.   

    SS_Request := TStringList.Create;
    SS_Request.Add('__VIEWSTATE=dDwtMTc2Njg5ODcxOztsPGJ0blN1Ym1pdDs%2BPg%3D%3D');
    SS_Request.Add('username='+ S_User);
    SS_Request.Add('password='+ S_PW);
    SS_Request.Add('btnSubmit.x='+ GetRandomStr(100, 6));
    SS_Request.Add('btnSubmit.y='+ GetRandomStr(11, 10));
    一行一个参数 &就相当于换行符了
      

  5.   

    试着进行BASE64编码,传过去的时候加密,接收时再解密。