我正在尝试使用凭据访问FTP。
我从未使用过curl,对我正在做的事情的理解有限,尽管我研究了很多我用过的函数。我曾经在C中开发过一个工作的FTP客户端和服务器,但它只是unix而且不久之前,所以它对我来说主要是一个卷曲问题(我真的想使用curl,因为这必须是跨平台的我不想自己包装一切,除非我确定我最终必须知道如何使用卷曲。)
到目前为止的代码(头文件未包含但我真的怀疑它是否需要,密码和登录隐藏的原因显而易见。它们工作,在filezilla中测试)
bool FTPClient::DownloadFile()
{
CURL *curl;
CURLcode res;
char buffer[CURL_ERROR_SIZE + 1] = {};
struct FtpFile ftpfile =
{
"test",
NULL
};
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL,
"https://[login]:[password]@lifesanctuary.eu/Update");
curl_easy_setopt(curl, CURLOPT_PORT, 21);
curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, buffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (CURLE_OK != res)
{
//ERREUR
fprintf(stderr, "erreur CURL %d:\n%s\n", res, buffer);
curl_global_cleanup();
return false;
}
}
if (ftpfile.stream)
fclose(ftpfile.stream);
curl_global_cleanup();
return true;
}
输出:
* Trying 91.121.145.87...
* TCP_NODELAY set
* Connected to lifesanctuary.eu (91.121.145.87) port 21 (#0)
* schannel: SSL/TLS connection with lifesanctuary.eu port 21 (step 1/3)
* schannel: checking server certificate revocation
* schannel: sending initial handshake data: sending 185 bytes...
* schannel: sent initial handshake data: sent 185 bytes
* schannel: SSL/TLS connection with lifesanctuary.eu port 21 (step 2/3)
* schannel: failed to receive handshake, need more data
* schannel: SSL/TLS connection with lifesanctuary.eu port 21 (step 2/3)
* schannel: encrypted data got 53
* schannel: encrypted data buffer: offset 53 length 4096
* schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - Le jeton fourni Ó la fonction nÆest pas valide
* Closing connection 0
* schannel: shutting down SSL/TLS connection with lifesanctuary.eu port 21
* schannel: clear security context handle
erreur CURL 35:
schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - Le jeton fourni Ó la fonction nÆest pas valide
我不知道问题所在。我有领导,搜索了一下,得出的结论是,我要么找到了无关的东西,要么就是我根本不理解。
对于一个可能是因为加密,SSL / TLS - 我在该域中不是很了解,设置服务器的人告诉我它使用了TLS,因此为什么我把那行:< / p>
curl_easy_setopt(curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1");
但我不知道该怎么做才能做到这一点似乎&#34; TLSv1&#34;是我认为可以适合我的唯一参数。我怀疑这可能是问题。
另外,我认为另一个问题可能是证书相关。我不完全确定为什么,但我确定我没有处理任何相关的证书,而且我也不确定它们是什么。我知道当我使用filezilla登录我的ftp时我会接受它,但在这里我显然不会。
那是怎么回事?证书问题?加密问题?也许完全不同的东西?提前致谢。
编辑: - 我认为这是一个证书问题,因为根据我的知识,任何https需要一个,我不会在这方面处理任何事情, - 我在考虑它可能是一个加密问题,因为这个错误代码似乎主要是由此造成的 - 我根本不知道它可能是其他的东西!
答案 0 :(得分:0)
我认为处理此服务器的人的一系列错误信息是有原因的。我被告知多次使用“https://”,而显然应该使用“ftp://”,现在我得到一个不同的错误,似乎表明我不应该使用加密系统,他说我应该使用。我正在关闭这个问题,因为这听起来更像团队的问题,而不是代码。