高手!快对大富翁失望了!使用IdHttp组件进行Post时.如何Post出带换行的内容?附源代码. (100分)

  • 主题发起人 主题发起人 steve0531
  • 开始时间 开始时间
S

steve0531

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用IdHttp post数据时.是要post一个memo组件的内容的.
这个memo里面的内容是:
111
222
333
然后.我post到一个页面.那么在这个页面显示的是111222333.
怎样才能让这个页面显示这样的结果?
111
222
333
当然.这个post到的web页面是没有问题的.它支持这个带格式的显示..我在web页面上添加表单提交上去没有问题.
下面是我的代码.
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.HTTPOptions:=[];
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;
 
通过上面的程序.我post的内容是
111
222
333
是带换行的.但.web页面显示的却是111222333
再次说明.web没有问题.
我急啊.太着急了.已经几天了.都在解决这个问题.耽误了整个项目的进度.老板都对我有意见了.我水平差.还请大家救命. help me.
 

首先你要检查你收到的内容是否含有 #13#10

回车换行应该换成这个发送

#13#10 = %0D%0A
空格 ' ' = %20

不知道你明白否?

用 HTML 显示的时候应该将 #13#10 换成 <br>
 
Memo1.text改成:
UrlEncode(Memo1.text)即可。
 
同意Kingron
 
很感谢kingron.
 
很感谢kingron.但使用urlencode还是不正确.还是不能post出带换行的内容.
 
kingron.我是否可以将我的源程序给你.你来帮助我解决一下?
当然.我会再开帖给你再加分.
 
这水平确实差。
先问问您,asp 页是您做的还是别人做的,如果是别人做的,那么告诉您,您就和老板说
asp 页没写好,它连换行符都没有进行替换处理,假如 asp 也是您做的,嘿嘿,就没地方
推责任了,那就自己动手吧:
1.标准做法:改 asp ,对输入进行正则替换。
2.客户端改进:把 TStringList 一行一行读入并将 #13 改成 <br>,形成新的 Memo 内容
后再 Post 。
3.我是老板,只能请您为大富翁论坛的程序员们倒茶水、擦键盘了。
 
楼上的意见是正确的,按此处理吧
 
学习一下 大富翁论坛 soul 写的正则替换函数吧(这个内容就在这个页面里):
function validateForm() {
var s1,r,ra;
s1=DelBadChar(document.getElementById("S1").value);
if(s1.length<12){
ra=/gz|up|关注|支持|继续|/?+/i;
r = s1.search(ra);
if(r>=0){
alert("请不要灌水");
return false;
}
}
document.getElementById("S1").value=s1;
}
这个函数的目标是检查 Post 数据中是否存在 gz、up、关注、支持、继续 这些短字词,如
果存在,就发送一个提示信息----“请不要灌水”。
 
嘿嘿.小雨哥,别那么猖狂..问题的解决办法不是你认为的那样..
request.Add('user=111');
request.Add('add=222');
request.Add('Mem='+memo1.text);
这样完全就可以解决所有的问题.
但我不想这样做.因为这加大了其它模块的复杂度..
我以前通过其它方法解决了这个问题.而且很简单.但现在忘记是什么方法了.所以想让大家集思广益来看一下.
 
我不是猖狂,您写的
request.Add('user=111');
request.Add('add=222');
request.Add('Mem='+memo1.text);
是蠢驴赛马。似是而非而已。不清楚原理和安全性,您就慢慢学吧。
 
我晕..
真晕了..asp页面没有问题..
我现在使用替换#13#10=<br>和' '='%20'
解决了.
但这还不是我以前的方法.
 
我之所以损您,完全是因为您那个“猖狂”的标题!有问题为什么不好好问?
 
I am.........faint.
呵呵.sorry..
我解释一下吧.完全是被逼无奈..本来标题是没有那些猖狂的字符的.
这不是着急吗?.后来又进行修改.改成了个这样的标题.看来是真的起作用了.把你们这些高手都请来了.

哦.以后会少用的.感谢大家.感谢delp.kingron.小雨哥.
 
嗯。好!
请注意的一点是:
在客户端替换只是一个权宜之计,正确的做法还是要在 asp 里处理,这个涉及到网站的安
全性。
 
后退
顶部