2

我正在尝试在我的项目中使用 libcurl.net 通过 SSL 执行 HTTP 请求。(System.Net 类不支持服务器名称扩展,我使用的是 Windows XP)

SSLContextFunction 中的代码:

public CURLcode OnSSLContext(SSLContext ctx, Object extraData)
{
    IntPtr ssl = SSL_new(ctx.Context);
    SSL_set_tlsext_host_name(ssl, "hostname");
    return CURLcode.CURLE_OK;
}

[DllImport("ssleay32.dll")]
internal static extern IntPtr SSL_new(IntPtr ctx);

[DllImport("ssleay32.dll")]
internal static extern void SSL_set_tlsext_host_name(IntPtr ssl, string message);

这会在调用 SSL_new 时引发错误:“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”

另外,尝试调用 OpenSSL 的方法 SSL_library_init() ,但没有结果。

谢谢

4

1 回答 1

0

您是否设置了 CPU 平台以匹配您正在使用的库?例如,如果您有一个 x86 DLL,则使用 x86,或者使用 x64 作为 x64 的。(即使这不是您的问题并且您只有 32 位系统,否则您的应用程序在 Win64 上运行)

我没有使用它,但我确实找到了一个现有的 libcurl 包装器,也许这可以帮助你:http: //sourceforge.net/projects/libcurl-net/

于 2011-05-05T12:09:23.227 回答