下面的代码用来登录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;

解决方案 »

  1.   

    不是代码哪里错了,是网站的登陆后台地址有可能不一样,不是每一个网站地址都是User=XXXX+Password=YYYY
      

  2.   

    要具体网站具体分析。'[email protected]&password=YYY'并不通用所有登录网站。
      

  3.   

    浏览器测试结果:
    http://reg.163.com/logins.jsp 能正常打开
    http://sso.netmarble.net/Logon/Logon.aspx 找不到服务器
      

  4.   

    参数我是通过抓包回来的没有问题是
    l_domain=login.netmarble.net&l_id=帐号&l_pwd=密码