我正在尝试在我的项目中使用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(),但没有结果。
由于
答案 0 :(得分:0)
您是否设置了CPU平台以匹配您正在使用的库?例如如果您有x86 DLL或x64用于x64 DLL,请使用x86。 (即使这不是你的问题,你只有32Bit系统,你的应用程序将打击Win64否则)
我没有使用它,但我确实找到了libcurl的现有包装器,也许这可以帮助你: http://sourceforge.net/projects/libcurl-net/