微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从Windows MFC客户端说SSL?

我有一个MFC应用程序,目前使用CAtlHttpClient查询Web服务器的一些信息。

我想改变这个,以便查询通过使用SSL的服务器authentication安全地进行。

谷歌search显示,微软已经多次改变了他们的支持方式,例如,WinInet,WinHTTP,但在我的生活中,我无法弄清楚如何在MSVS 2005下使用MFC进行上述操作。

该应用程序是在C ++中,如果可能的话,我想避免将.Net拖入图片

无法使用MinGW与BUILD_SHARED_LIBS = ON构buildLLVM

如何在gdb中打印std :: map值

C#如何从一个进程检索代码,然后运行它?

使用C#获取连接到命名pipe道服务器的客户端的进程ID

我可以使用正确的链接顺序和依赖关系为C项目重新生成makefile吗?

任何帮助,提示,build议或指针感激地赞赏!

谢谢,

ONY

Microsoft Speech Platform Runtime 11和Cortana的语音识别有什么不同?

位域的哪一端是最重要的位?

如何在Windows启动时启动应用程序?

如何添加内容到Windows任务栏

如何显示Windowslogin对话框?

你可以看看Ultimate TCP / IP – 这是MS友好的,可能会做你以后的事情:

http://www.codeproject.com/KB/MFC/UltimateTCPIP.aspx

我使用这个工具包,它非常好。

找到一个指向一些可能适合该法案的Microsoft示例代码的指针: http : //msdn.microsoft.com/en-us/library/s2ya483s(VS.80).aspx

然而,这AcquireCredentialsHandle失败,这将是我的下一个问题,这个八月论坛…

早在2002年,我就为Windows开发者杂志写了一篇文章,展示了如何使用OpenSSL为MFC的CAsyncSocket提供SSL。 代码文章在这里: http : //www.serverframework.com/asynchronousousevents/2010/10/using-openssl-with-asynchronousous-sockets.html ,可能会帮助你。你也可以做类似的使用微软的SChannel,但它OpenSSL会为你提供一些缓冲,所以你需要做的就是将字节压入,直到你得到清除文本为止。

只要使用WinHttp,这是一个伟大的API,并且拥有所有你需要通过HTTP进行SSL(加上Vista的代理配置)

怎么样使用作为OpenSSL一部分的libeay32.dllssleay32.dll文件

https://code.google.com/p/openssl-for-windows/

我正在使用Visual Studio 2005与MFC应用程序具有访问一个文件的网站的功能。 我正在使用WinINet函数, 请参阅Microsoft Windows开发人员中心中的WinINet API参考 ,它提供了一组简单的函数,这些函数使用指定协议(HTTP,HTTPS,FTP等)的URL来访问网站,小文件

查看libcurl网站上有一个引用此Microsoft技术说明, 文章Id 238425 – INFO:WinInet不支持在服务中被标记为已停用的2015年8月12日。 文章总结是:

从服务或Internet信息服务器(IIS)应用程序(也是服务)运行时不支持Microsoft Win32 Internet函数(从WinInet.dll导出)。 本文讨论在服务或Internet @R_314_4045@ion server应用程序中使用WinInet.dll。

我在MFC应用程序中使用的适用源代码一个对话框,它使用HTTPS类型的URL来附加附加信息来构建一个完整的URI,然后去网站拉完整的小文件是:

int GetFile (HINTERNET hOpen,TCHAR * szURL,BYTE szTemp[4096]) { DWORD dwSize; TCHAR szHead[15]; HINTERNET hConnect; szHead[0] = ''; szTemp[0] = 0; // Opens a resource specified by a complete HTTP URL. if ( !(hConnect = InternetopenUrl( hOpen,szURL,szHead,15,INTERNET_FLAG_DONT_CACHE,0))) { DWORD dwlasterror = GetLastError(); if (dwlasterror == ERROR_INTERNET_NAME_NOT_RESOLVED) { AfxMessageBox (_T("Error: ERROR_INTERNET_NAME_NOT_RESOLVED - check LAN connectivity.")); } else if (dwlasterror == ERROR_INTERNET_TIMEOUT) { AfxMessageBox (_T("Error: ERROR_INTERNET_TIMEOUT - check LAN connectivity.")); } else if (dwlasterror == ERROR_INTERNET_SERVER_UNREACHABLE) { AfxMessageBox (_T("Error: ERROR_INTERNET_SERVER_UNREACHABLE - check LAN connectivity.")); } else if (dwlasterror == ERROR_INTERNET_OPERATION_CANCELLED) { AfxMessageBox (_T("Error: ERROR_INTERNET_OPERATION_CANCELLED - check LAN connectivity.")); } else { CString msg; msg.Format (_T("Error: GetLastError() returned %d."),dwlasterror); AfxMessageBox (msg); } return -2; } // Reads data from a handle opened by the InternetopenUrl,FtpOpenFile,or HttpOpenRequest function. if (InternetReadFile (hConnect,szTemp,4096,&dwSize) ) { if (dwSize) { return dwSize; } return -3; } return -4; } int DownloadURLImage (TCHAR * szURL,BYTE szTemp[4096]) { int result = -1; HINTERNET hInternet; // Initializes an application's use of the WinINet functions. hInternet= Internetopen (_T("DeviceConfig"),INTERNET_OPEN_TYPE_DIRECT,NULL,NULL); if (hInternet) { // if open succeeded then get the file and close the handle as we be done. result = GetFile (hInternet,szTemp) ; InternetCloseHandle(hInternet); } return result ; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐