我正在尝试使用Windows API函数通过powerbuilder应用程序连接到ftp服务器。我设法通过Internet Explorer连接到ftp服务器(所以我认为这不是权限问题),但是由于某种未知原因,该应用程序失败了。

String  ls_Null, &
            ls_id
Integer li_rc

li_rc = 1

IF Not InternetAutodial(AUTODIAL_FORCE_UNATTENDED, 0) THEN
    f_write_to_err_log('IMPORT Unable To Connect Internet - Dialup')
    li_rc = -1
ELSE
    SetNull(ls_Null)
    ls_id = "Care_Dsend"
    al_internet_handle = InternetOpen(ls_id, INTERNET_OPEN_TYPE_DIRECT, ls_Null, ls_Null, 0)

    IF al_internet_handle > 0 THEN
        al_ftp_connect_handle = InternetConnect(al_internet_handle, is_ftp_url, il_ftp_port, is_ftp_user, is_ftp_password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, al_ref)
    END IF
END IF

Return li_rc


//al_internet_handle, al_ftp_connect_handle are by ref long parms
//al_ref is a by ref unsignedlong parm
//is_ftp_url, is_ftp_user, is_ftp_password are strings
//il_ftp_port is long

该函数设法从InternetOpen api函数返回一个句柄,但从InternetConnect函数返回0。

有任何想法吗?

最佳答案

好的,我发现了问题所在。我在函数声明的末尾缺少; Ansi ,如下所示:

ulong InternetOpen函数(参考
字符串lpszAgent,ulong dwAccessType,
引用字符串lpszProxy,引用字符串
lpszProxyBypass,ulong dwFlags)
库“WININET.DLL”的别名
“InternetOpenA ; Ansi

07-26 09:36