aliyun / aliyun-oss-cpp-sdk

Aliyun OSS SDK for C++
Other
188 stars 88 forks source link

libCurl更新成7.67版本,重新编译成果物,上传图片直接超时 #57

Closed ayumukid closed 4 years ago

ayumukid commented 4 years ago

libCurl更新成7.67版本后,重新编译成果物,上传图片直接超时

huiguangjun commented 4 years ago

麻烦设置一下这个日志开关,然后复现一下问题,终端上会刷一些请求日志,麻烦把这个日志贴一下。 在windows下 set OSS_SDK_LOG_LEVEL=debug 在 linux 环境下 export OSS_SDK_LOG_LEVEL=debug

ayumukid commented 4 years ago

我设置了日志级别,但日志的默认路径不知道在哪,通过控制台打印的错误码 是 200028,msg timeout was reached 上个代码:

std::string AccessKeyId = "xxxx";
std::string AccessKeySecret = "xxxx"
std::string Endpoint = "oss-cn-hangzhou.aliyuncs.com";
std::string BucketName = "aaa";
std::string ObjectName = "data\2.jpg";

InitializeSdk();
SetLogLevel(LogDebug);

ClientConfiguration conf;
OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);

auto outcome = client.PutObject(BucketName, ObjectName, "d:\\3.jpg"); //这里填写本地的文件名

if (!outcome.isSuccess()) {
    /* 异常处理 */
    std::cout << "PutObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
    ShutdownSdk();
    return -1;
}
else
{
    std::cout << "succ";
}

ShutdownSdk();
huiguangjun commented 4 years ago

日志是默认输出 到std::cerr 上。

huiguangjun commented 4 years ago

7.66 版本是你自己编译出来的吗, 是不是你编译的方式有问题, 导致它无法正常运行。

你可以使用 附带的curl 程序 来验证你的构建的libcurl 库

ayumukid commented 4 years ago

libcurl 是 v7.67,是自己编译的,它依赖openssl v1.1.1d版本的,自带的libcurl 是7.59版本的,是正常的。

我自己有写过简单的demo 验证过libcurl v7.67版本的http 的post get,put请求是正常的 我个人觉得是openssl 1.1.1d和openssl 1.0.x 版本头文件变更导致的兼容性问题 建议你可以自行编译个libcurl7.67版本验证一下看看

huiguangjun commented 4 years ago

在工程下,有个 third_party/ 目录, 你可以把 自己编译 相关 库 和 头文件一起更新替换掉。

然后再重新构建。

ayumukid commented 4 years ago

我就是这么操作的,编译出来的

huiguangjun commented 4 years ago

1)本地做了测试,替换到 libcurl 7.6.7 版本,是可以正常 work的。 2)在windows 下,libcurl 默认是 使用 WINSSL, 你不需要特别构建 openssl v1.1.1d, 你可以使用缺省命令来构建出 libcurl,然后再试试。

ayumukid commented 4 years ago

后面重新试了一下,是可以通过put上传图片文件成功了