标签: wininet

Delphi中用于FTP的WinInet包装器

请给出建议.我想在WinInet上的Delphi中开发FTP/SFTP/FTPS客户端下载管理器.关于做什么更好(Indy,ISC Components,WinInet ......)?可能已经有解决方案?

delphi ftp sftp wininet indy

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

Delphi - 需要Delphi7的XE2代码.使用wininet下载文件

注意:我只想使用wininet,而不是urlmon-urldownloadtofile.

好吧,我有以下代码在XE2中完美地下载文件:

procedure DownloadFile(URL: string; Path: string);
const
  BLOCK_SIZE = 1024;
var
  InetHandle: Pointer;
  URLHandle: Pointer;
  FileHandle: Cardinal;
  BytesRead: Cardinal;
  DownloadBuffer: Pointer;
  Buffer: array [1 .. BLOCK_SIZE] of byte;
  BytesWritten: Cardinal;
begin
  InetHandle := InternetOpen(PWideChar(URL), 0, 0, 0, 0);
  URLHandle := InternetOpenUrl(InetHandle, PWideChar(URL), 0, 0, 0, 0);
  FileHandle := CreateFile(PWideChar(Path), GENERIC_WRITE, FILE_SHARE_WRITE, 0,
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
  DownloadBuffer := @Buffer;
  repeat
    InternetReadFile(URLHandle, DownloadBuffer, BLOCK_SIZE, BytesRead);
    if not WriteFile(FileHandle, DownloadBuffer, BytesRead, BytesWritten, 0) or
  (BytesWritten <> BytesRead) then
      RaiseLastOSError;
  until BytesRead < …
Run Code Online (Sandbox Code Playgroud)

delphi wininet download delphi-7 code-conversion

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

VB6-使用URL的POST&GET并以VB6形式显示

我的VB6如何形成POST 2变量,如何从URL中提取结果,然后将VB6变量分配给结果?

我需要有人向我展示非常基本的VB6示例代码,或为我指明正确的方向。这是最简单的形式-在最终产品中,PHP变量将写入MySQL,但这不是我需要的帮助。

我有一个简单的PHP页面,它接受2个参数:

test.php?var1=secret&var2=pass
Run Code Online (Sandbox Code Playgroud)

这是我非常简单的PHP代码

<?php

$var1 = $_GET['var1'];
$var2 = $_GET['var2'];

$varAcc = "ACCEPTED";
$varDen = "DENIED";

if ($var1 === "secret" && $var2 === "pass")
  {
   echo $varAcc;
  }
else
  {
   echo $varDen;
  }
?>
Run Code Online (Sandbox Code Playgroud)

其背后的逻辑是使用“ userName”,“ passWord”和“ hardWareID”进行VB6登录,并发送哈希。将对照MySQL检查该散列,以查看其是否存在,并返回YES或NO以进行访问,其帐户还剩多少天以及其他一些详细信息,例如FULL NAME,ACCOUNT INFO等。

(不。我不想使用XML,只是以为我会把它放在那里。只需POST&Receive to vars)

谢谢...

vb6 api winapi wininet

1
推荐指数
1
解决办法
2万
查看次数

如何在下载之前获取文件大小

我试图从http:服务器下载二进制文件.我使用的功能InternetOpenUrl(),然后InternetReadFile()下载文件.下载之前是否可以知道文件的大小?

谢谢Vinod

c++ wininet download

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

尝试添加现有的Class模块时出现内存不足错误VB6

我正在研究VB6中的一个项目.我必须添加下载功能.它包含1个表单,1个类模块和1个模块(bas)文件.当我将现有模块添加到我的项目时,它是成功的但是当我尝试将类模块或frm文件添加到项目时,它会显示OUT OF MEMORY.我一直在讨论这个问题很长一段时间但是找不到任何解决办法.

我不能发布任何代码,因为它是一个公司项目.我只能说它是一个包含数千行代码的庞大项目.我试图添加的模块用于通过HTTP下载文件,它访问Wininet.dll中的方法.

我不知道项目是否达到了代码行的最大限制,或者它是否是变量问题.

我听说制作DLL可以解决这个问题,但我们不需要这样做.有人可以帮忙吗?

vb6 dll wininet out-of-memory

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

Delphi,发布WinInet并跟踪上传进度

如何使用WinInet api在Delphi中发送HTTP POST请求相关:

如何发布帖子请求并跟踪进度?

这不起作用(查看评论):

procedure StatusCallback(
  hInet:        HINTERNET;
  Context:      DWORD_PTR;
  Status:       DWORD;
  pInformation: Pointer;
  InfoLength:   DWORD ); stdcall;
var
  s: string;
  c: Cardinal;
begin
  case Status of
    INTERNET_STATUS_CLOSING_CONNECTION: s := 'Closing the connection to the server';
    INTERNET_STATUS_CONNECTED_TO_SERVER: s := 'Successfully connected to the socket address: ';
    INTERNET_STATUS_CONNECTING_TO_SERVER: s := 'Connecting to the socket address';
    INTERNET_STATUS_CONNECTION_CLOSED: s := 'Successfully closed the connection to the server';
    INTERNET_STATUS_CTL_RESPONSE_RECEIVED: s := 'Not implemented';
    INTERNET_STATUS_HANDLE_CLOSING: s := 'This handle value has been …
Run Code Online (Sandbox Code Playgroud)

delphi wininet

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

使用std :: filesystem输出作为LPCWSTR

我正在制作一个程序,以递归方式列出某个目录中的所有文件,并使用WinINet将每个文件分别上传到FTP服务器.我遇到的问题是在FtpPutFile()函数中使用filesystem :: path :: filename,因为需要LPCWSTR.什么是最好和最简单的转换方式(或以某种方式使用它)?

    std::string path = "C:\\Programs";
    for (const auto & entry : std::experimental::filesystem::recursive_directory_iterator(path))
        FtpPutFile(hIConnect, entry.path().filename(), entry.path().filename(), FTP_TRANSFER_TYPE_BINARY, 0);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:没有合适的转换函数从"const std :: experimental :: filesystem :: v1 :: path"到"LPCWSTR"存在

编辑:这是一个适合我的解决方案,遵循Lightness解决方案:

    std::string path = "C:\\Programs";
    for (const auto & entry : std::experimental::filesystem::recursive_directory_iterator(path))
        FtpPutFile(hIConnect, entry.path().wstring().c_str(), entry.path().filename().wstring().c_str(), FTP_TRANSFER_TYPE_BINARY, 0);
Run Code Online (Sandbox Code Playgroud)

c++ windows wininet visual-studio-2017

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

延迟带宽

DUPE:如何以编程方式检查VC++中的Internet带宽?

我们可以从ping的延迟中找到带宽.如果是,它是如何完成的

networking ping wininet visual-c++

0
推荐指数
2
解决办法
1348
查看次数

接受字符串结果代码注释

我有来自MSDN页面的这个片段

lplpszAcceptTypes - 指向以null结尾的字符串数组的指针,指示客户端接受的媒体类型.这是一个例子.

PCTSTR rgpszAcceptTypes[] = {_T(“text/*”), NULL};

这里的问题是/*“text/*”读通过智能感知和遵循这条线得到注释掉的代码注释.这里有什么解决方案?

c c++ wininet visual-studio

0
推荐指数
1
解决办法
103
查看次数