下面这个代码在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;

解决方案 »

  1.   

    可是我已经改为 PAnsiChar了啊,哪里错了能指出吗?
      

  2.   

    2010的pchar已经是双字节的了,你要使用pansichar
    包括string类型都是unicode编码的
      

  3.   

    你把所有的定义都转成unicode试试?
      

  4.   

    拿个tcp的中转监控程序抓一下收到的数据是什么
      

  5.   

    String->AnsiString
    PChar->PAnsiChar
    有些函数没有办法用Ansi的参数,再修改成String(xxxx) PChar(OOOO)
    一般简单的就ok了。不过,我不建议你把D7的代码在D2010里重新编译。
    D2010的兼容性,真的TMD差。
    我改Asta控件到D2010,用了3天了,都还没有ok,最后卡住的地方我一直没有理解过来。
    竟然在 if xxx<>0 then 这种地方卡住。报的错还是跟这句代码无关的,楞没看懂。
      

  6.   

    唉怎么默认是unicode,气死人了,搞半天也转移不过来
    我也不是不想用D7,但D7编译的程序不稳定,听说2010改善很多了才想转过来的
      

  7.   

    新的DELPHI2010 对文字编码改变挺大的,我的很多PAS都要自己再修改一次才能用,多数就是ANSI CHAR这些问题
      

  8.   

    我也遇到这个问题!没有解决!郁闷ING!!!!!!!!!!!!