D
dragonhuang
Unregistered / Unconfirmed
GUEST, unregistred user!
我是通过网关上网的,有一个用户提交网页,我想通过程序来完成。用了Indy的IdHttp组件,
提交代码如下:
procedure TForm1.GetPostData(urltext:String);
var
Response: TStringStream;
PostData: TStrings;
begin
memoHTML.Clear;
flatmemo1.Clear;
Response := TStringStream.Create('');
PostData:=TStringlist.Create;
PostData.Add('user='+username.Text);
PostData.Add('pass='+password.Text);//两个文本框
try
HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
HTTP.Intercept := LogDebug;
HTTP.InterceptEnabled := true;
HTTP.Post(urltext, PostData, Response);
memoHTML.Lines.Text := Response.DataString;
finally
PostData.Free;
Response.Free;
end;
end;
能够提交成功,但提示密码不正确,后用一个memo来输入以下内容
user=aaa&pass=***
post换成HTTP.Post(urltext, memo.lines, Response);
就可以成功。分析返回的内容发现:
用文本框输入提交后的Content-Length比用memo提交的Content-Length大了3。
但如果把文本框的内容加到memo中提交也不行,只有在memo直接输入才行。
不知这增加的长度是什么内容?从返回的内容看提交的信息是完全一样的。
提交代码如下:
procedure TForm1.GetPostData(urltext:String);
var
Response: TStringStream;
PostData: TStrings;
begin
memoHTML.Clear;
flatmemo1.Clear;
Response := TStringStream.Create('');
PostData:=TStringlist.Create;
PostData.Add('user='+username.Text);
PostData.Add('pass='+password.Text);//两个文本框
try
HTTP.Request.ContentType := 'application/x-www-form-urlencoded';
HTTP.Intercept := LogDebug;
HTTP.InterceptEnabled := true;
HTTP.Post(urltext, PostData, Response);
memoHTML.Lines.Text := Response.DataString;
finally
PostData.Free;
Response.Free;
end;
end;
能够提交成功,但提示密码不正确,后用一个memo来输入以下内容
user=aaa&pass=***
post换成HTTP.Post(urltext, memo.lines, Response);
就可以成功。分析返回的内容发现:
用文本框输入提交后的Content-Length比用memo提交的Content-Length大了3。
但如果把文本框的内容加到memo中提交也不行,只有在memo直接输入才行。
不知这增加的长度是什么内容?从返回的内容看提交的信息是完全一样的。