相关疑难解决方法(0)

使用Delphi调用Http GET url的最简单方法是什么?

我想在我的应用程序中调用一个Web服务,我可以在导入WSDL时使用它,或者只使用带有URL和参数的"HTTP GET",所以我更喜欢后者,因为它很简单.

我知道我可以使用indy idhttp.get来完成这项工作,但这很简单,我不想在我的应用程序中添加复杂的indy代码.

更新:抱歉,如果我不清楚,我的意思是"不要添加复杂的indy代码",我不想为这个简单的任务添加indy组件,并且更喜欢更轻松的方式.

delphi network-programming http

43
推荐指数
6
解决办法
8万
查看次数

WinHttp Delphi包装器

请告知Delphi XE中是否有WinHTTP包装器

按优先顺序排列:

  1. 一个开箱即用的Delphi单元
  2. 带有移植入口例程的第三方开源pas文件
  3. 一个xxx_TLB.pas包装器

解:

由于评论不允许格式化代码,我在问题中粘贴了解决方案:

const
  winhttpdll = 'winhttp.dll';

  WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0;
  WINHTTP_FLAG_REFRESH              = $00000100;
  WINHTTP_FLAG_SECURE               = $00800000;
  WINHTTP_ADDREQ_FLAG_COALESCE      = $40000000;
  WINHTTP_QUERY_FLAG_NUMBER         = $20000000;

function WinHttpOpen(pwszUserAgent: PWideChar; dwAccessType: DWORD;
  pwszProxyName, pwszProxyBypass: PWideChar; dwFlags: DWORD): HINTERNET; stdcall; external winhttpdll;
function WinHttpConnect(hSession: HINTERNET; pswzServerName: PWideChar;
  nServerPort: INTERNET_PORT; dwReserved: DWORD): HINTERNET; stdcall; external winhttpdll;
function WinHttpOpenRequest(hConnect: HINTERNET; pwszVerb: PWideChar;
  pwszObjectName: PWideChar; pwszVersion: PWideChar; pwszReferer: PWideChar;
  ppwszAcceptTypes: PLPWSTR; dwFlags: DWORD): HINTERNET; stdcall; external winhttpdll;
function WinHttpCloseHandle(hInternet: HINTERNET): BOOL; stdcall; external winhttpdll; …
Run Code Online (Sandbox Code Playgroud)

delphi winhttp wrapper delphi-xe

9
推荐指数
2
解决办法
7879
查看次数

如何在这段代码中释放TOleStream

这是在Delphi中完成的自定义命名空间处理程序,用于将文件加载到webbrowser组件中.


Datastream:IStream;

var
  F: TFileStream;
  Dummy: INT64;
begin

  F:=TFileStream.Create(strfilename fmOpenRead);
  CreateStreamOnHGlobal(0, True, DataStream);
  TOleStream.Create(DataStream).CopyFrom(F, F.Size);
  DataStream.Seek(0, STREAM_SEEK_SET, Dummy);
  TotalSize := F.Size;
  F.Free;
end;

问题是Fastmm4在程序结束时出现内存泄漏错误并且说没有释放TOleStream.我如何释放它?如果我把TOleStream放在变量中并像这样分配

var
TOS:TOleStream;

TOS:=TOleStream.Create(DataStream)
TOS.CopyFrom(F, F.Size);

..
TOS.Free;
End;

当我释放TOS变量时,我得到一个错误(EAccessViolation指向ComObj中的TComObject.ObjRelease).非常感谢您的意见和帮助.这个问题一直困扰着我一段时间.

我也想知道它是否可能是FastMM4的东西?它会提供虚假信息吗?在一些代码如下.TOLEStream通常如何被释放?

f.SaveToStream(TOleStream.Create(DataStream));

有没有办法在不使用TFileStream的情况下将数据发送到数据流?

嗨,Remy,您可以在这里找到一个带有fastmm和问题过程的命名空间处理程序的工作演示项目:http://mode5.webs.com/namespace.7z 当项目加载时,单击按钮以加载命名空间处理程序文件.退出时,应该得到fastmm错误.亲切的问候,

delphi ole fastmm

6
推荐指数
1
解决办法
1112
查看次数

标签 统计

delphi ×3

delphi-xe ×1

fastmm ×1

http ×1

network-programming ×1

ole ×1

winhttp ×1

wrapper ×1