unit unHttp; interface uses superobject; type TCallback = procedure(errMsg: string) of object; function post(url: string; params: string; callback: TCallback): ISuperObject; implementation uses msxml, System.Variants; function post(url: string; params: string; callback: TCallback): ISuperObject; var req: IXMLHttpRequest; jsObj: ISuperObject; i: Integer; begin req := CoXMLHTTP.Create; req.open('POST', url, false, EmptyParam, EmptyParam); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(params); jsObj := SO(req.responseText); if jsObj.i['retid'] = 0 then begin callback(jsObj.S['retmsg']); result := nil; end else result := jsObj.O['data']; end; end.
調用示例,中文無須編碼,返回結果無須轉碼,請求后台utf8編碼數據
var jsRet: ISuperObject; begin jsRet := post('http://xxx.cn','f=order_test1&p=[{"token":"23115683430a3ed168dc4c76d87bbc8f","name":"我是參數"}]',callback); if Assigned(jsRet) then Writeln(jsRet.AsString); end;