有一个Web服务,我想在我的应用程序中调用,我可以使用它与导入WSDL或只使用“HTTP GET”与URL和参数,所以我更喜欢以后,因为它很简单的事情。
我知道我可以使用indy idhttp.get,做这项工作,但这是非常简单的事情,我不想添加复杂的indy代码到我的应用程序。
更新:对不起,如果我不清楚,我的意思是“不添加复杂的indy代码”,我不想添加indy组件只是这个简单的任务,并更喜欢更轻的方式。
解决方法
你可以使用
WinINet API这样:
uses WinInet; function GetUrlContent(const Url: string): string; var NetHandle: HINTERNET; UrlHandle: HINTERNET; Buffer: array[0..1024] of Char; BytesRead: dWord; begin Result := ''; NetHandle := InternetOpen('Delphi 5.x',INTERNET_OPEN_TYPE_PRECONFIG,nil,0); if Assigned(NetHandle) then begin UrlHandle := InternetOpenUrl(NetHandle,PChar(Url),INTERNET_FLAG_RELOAD,0); if Assigned(UrlHandle) then { UrlHandle valid? Proceed with download } begin FillChar(Buffer,SizeOf(Buffer),0); repeat Result := Result + Buffer; FillChar(Buffer,0); InternetReadFile(UrlHandle,@Buffer,BytesRead); until BytesRead = 0; InternetCloseHandle(UrlHandle); end else { UrlHandle is not valid. Raise an exception. } raise Exception.CreateFmt('Cannot open URL %s',[Url]); InternetCloseHandle(NetHandle); end else { NetHandle is not valid. Raise an exception } raise Exception.Create('Unable to initialize Wininet'); end;
来源:http://www.scalabium.com/faq/dct0080.htm
WinINet API使用InternetExplorer正在使用的相同的东西,所以你也得到任何连接和代理设置由InternetExplorer免费。