下面这个代码在Delphi7.0上编译出来运行完全正常,但用Delphi2010编译也可以编译通过,不过提交数据的时候却弹出错误,不知道是什么原因,delphi7.0编译出来的是没错误的执行这行代码的时候出错
HttpOpenRequest(hConnect, PChar('POST'),PChar(URLB), 'HTTP/1.1',nil, @AcceptType, INTERNET_FLAG_SECURE, 0);分数不多请大家帮下忙
function PostNet(const URLA,URLB,FTPostQuery:string;ProA:String):string;
const BufferSize = 1024;
var
Session,
hConnect,hRequest:HINTERNET;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
Str,BUff: string;
TimeOut:integer;
AcceptType:LPStr;
TOPA:String;
ProB:String;
begin
TimeOut:=4000;
if ProA<>'' then ProB:='http://'+ProA;
Session := InternetOpen('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',3,Pchar(ProB), nil, 0);
try
InternetSetOption(Session,Internet_OPTION_CONNECT_TIMEOUT,@TimeOut,4); //设置超时4000
InternetSetOption(Session,INTERNET_OPTION_RECEIVE_TIMEOUT,@TimeOut,4); //设置超时4000
hConnect := InternetConnect(Session,PChar(URLA),INTERNET_DEFAULT_HTTPS_PORT, nil, nil,INTERNET_SERVICE_HTTP, 0, 0);
AcceptType := PAnsiChar('Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*');
hRequest := HttpOpenRequest(hConnect, PChar('POST'),PChar(URLB), 'HTTP/1.1',nil, @AcceptType, INTERNET_FLAG_SECURE, 0);
TOPA:='Accept-Language: zh-cn';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,PChar(FTPostQuery), Length(FTPostQuery));
try
repeat
InternetReadFile(hRequest, @Buffer,SizeOf(Buffer), BufferLen);
SetLength(Str,BufferLen);
move(Buffer[1], Str[1], BufferLen);
Buff:=Buff+Str;
until BufferLen = 0;
Result:=BUff;
finally
InternetCloseHandle(hRequest)
end
finally
InternetCloseHandle(Session);
InternetCloseHandle(hConnect);
end
end;
HttpOpenRequest(hConnect, PChar('POST'),PChar(URLB), 'HTTP/1.1',nil, @AcceptType, INTERNET_FLAG_SECURE, 0);分数不多请大家帮下忙
function PostNet(const URLA,URLB,FTPostQuery:string;ProA:String):string;
const BufferSize = 1024;
var
Session,
hConnect,hRequest:HINTERNET;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
Str,BUff: string;
TimeOut:integer;
AcceptType:LPStr;
TOPA:String;
ProB:String;
begin
TimeOut:=4000;
if ProA<>'' then ProB:='http://'+ProA;
Session := InternetOpen('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',3,Pchar(ProB), nil, 0);
try
InternetSetOption(Session,Internet_OPTION_CONNECT_TIMEOUT,@TimeOut,4); //设置超时4000
InternetSetOption(Session,INTERNET_OPTION_RECEIVE_TIMEOUT,@TimeOut,4); //设置超时4000
hConnect := InternetConnect(Session,PChar(URLA),INTERNET_DEFAULT_HTTPS_PORT, nil, nil,INTERNET_SERVICE_HTTP, 0, 0);
AcceptType := PAnsiChar('Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*');
hRequest := HttpOpenRequest(hConnect, PChar('POST'),PChar(URLB), 'HTTP/1.1',nil, @AcceptType, INTERNET_FLAG_SECURE, 0);
TOPA:='Accept-Language: zh-cn';
HttpAddRequestHeaders(hRequest,PChar(TOPA),Length(TOPA),HTTP_ADDREQ_FLAG_ADD);
HttpSendRequest(hRequest, 'Content-Type: application/x-www-form-urlencoded', 47,PChar(FTPostQuery), Length(FTPostQuery));
try
repeat
InternetReadFile(hRequest, @Buffer,SizeOf(Buffer), BufferLen);
SetLength(Str,BufferLen);
move(Buffer[1], Str[1], BufferLen);
Buff:=Buff+Str;
until BufferLen = 0;
Result:=BUff;
finally
InternetCloseHandle(hRequest)
end
finally
InternetCloseHandle(Session);
InternetCloseHandle(hConnect);
end
end;
包括string类型都是unicode编码的
PChar->PAnsiChar
有些函数没有办法用Ansi的参数,再修改成String(xxxx) PChar(OOOO)
一般简单的就ok了。不过,我不建议你把D7的代码在D2010里重新编译。
D2010的兼容性,真的TMD差。
我改Asta控件到D2010,用了3天了,都还没有ok,最后卡住的地方我一直没有理解过来。
竟然在 if xxx<>0 then 这种地方卡住。报的错还是跟这句代码无关的,楞没看懂。
我也不是不想用D7,但D7编译的程序不稳定,听说2010改善很多了才想转过来的