下面的代码用来登录163完全没问题但是有一些网站却出错为什么呢是不是代码哪里弄错了?
<正常:>Buff:=GetWebPage('reg.163.com','logins.jsp','[email protected]&password=YYY');
<出错:>Buff:=GetWebPage('sso.netmarble.net','/Logon/Logon.aspx','l_domain=login.netmarble.net&l_id=aaaa&l_pwd=bbbb');function GetWebPage(const URLA,URLB,FTPostQuery:string):string;
var
Session,
hConnect,hRequest:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
TimeOut:integer;
AcceptType:LPStr;
g_UserAgent,TOPA:String;
begin
TimeOut:=4000;
g_UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )';
Session:=InternetOpen(PChar(g_UserAgent),0,niL,niL,0);
InternetSetOption(Session,Internet_OPTION_CONNECT_TIMEOUT,@TimeOut,4); //设置超时4000
InternetSetOption(Session,INTERNET_OPTION_RECEIVE_TIMEOUT,@TimeOut,4); //设置超时4000
hConnect := InternetConnect(Session,Pchar(URLA),80, nil, nil,INTERNET_SERVICE_HTTP, 0, 0);
AcceptType := PChar('Accept: */*');
hRequest := HttpOpenRequest(hConnect, 'POST',PChar(URLB), 'HTTP/1.0',nil, @AcceptType, INTERNET_FLAG_RELOAD, 0);
//----------------------------------------------------------
TOPA:='Content-Type: application/x-www-form-urlencoded';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Accept-Language: zh-cn';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Referer: http://www.163.com';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
//----------------------------------------------------------
HttpSendRequest(hRequest, nil,0,PChar(FTPostQuery), Length(FTPostQuery));
dwLengthSizeBuffer:=1024;
HttpQueryInfo(hRequest,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(hRequest,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(hRequest);
InternetCloseHandle(Session);
InternetCloseHandle(hConnect);
Result:=StrPas(Contents);
FreeMem(Contents);
end;
<正常:>Buff:=GetWebPage('reg.163.com','logins.jsp','[email protected]&password=YYY');
<出错:>Buff:=GetWebPage('sso.netmarble.net','/Logon/Logon.aspx','l_domain=login.netmarble.net&l_id=aaaa&l_pwd=bbbb');function GetWebPage(const URLA,URLB,FTPostQuery:string):string;
var
Session,
hConnect,hRequest:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
TimeOut:integer;
AcceptType:LPStr;
g_UserAgent,TOPA:String;
begin
TimeOut:=4000;
g_UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )';
Session:=InternetOpen(PChar(g_UserAgent),0,niL,niL,0);
InternetSetOption(Session,Internet_OPTION_CONNECT_TIMEOUT,@TimeOut,4); //设置超时4000
InternetSetOption(Session,INTERNET_OPTION_RECEIVE_TIMEOUT,@TimeOut,4); //设置超时4000
hConnect := InternetConnect(Session,Pchar(URLA),80, nil, nil,INTERNET_SERVICE_HTTP, 0, 0);
AcceptType := PChar('Accept: */*');
hRequest := HttpOpenRequest(hConnect, 'POST',PChar(URLB), 'HTTP/1.0',nil, @AcceptType, INTERNET_FLAG_RELOAD, 0);
//----------------------------------------------------------
TOPA:='Content-Type: application/x-www-form-urlencoded';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Accept-Language: zh-cn';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
TOPA:='Referer: http://www.163.com';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
//----------------------------------------------------------
HttpSendRequest(hRequest, nil,0,PChar(FTPostQuery), Length(FTPostQuery));
dwLengthSizeBuffer:=1024;
HttpQueryInfo(hRequest,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(hRequest,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(hRequest);
InternetCloseHandle(Session);
InternetCloseHandle(hConnect);
Result:=StrPas(Contents);
FreeMem(Contents);
end;
http://reg.163.com/logins.jsp 能正常打开
http://sso.netmarble.net/Logon/Logon.aspx 找不到服务器
l_domain=login.netmarble.net&l_id=帐号&l_pwd=密码