CInternetSession CHttpFile Post提交数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //给指定url发请求, 返回请求后的结果 string CAutoPatchDlg::SendURLPost(string strServerName, string strFormActionUrl, string strPostStr) { CString strFormData(strPostStr.c_str()); // 需要提交的数据 CInternetsess sess( "HttpClient" ); //连结超时没效果的, 发送超时与接收超时有用, 连结超时可以用多线程WaitForSingleObject来实现 sess.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 5000); // 5000毫秒的连接超时 sess.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 5000); // 5000毫秒的发送超时 sess.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 5000); // 5000毫秒的接收超时 sess.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 5000); // 5000毫秒的发送超时 sess.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 5000); // 5000毫秒的接收超时 sess.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1); // 1次重试 CString strHeaders = _T( "Content-Type: application/x-www-form-urlencoded" ); // 请求头 CHttpConnection *pConnection = sess.GetHttpConnection(strServerName.c_str()); CHttpFile *pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, strFormActionUrl.c_str()); CString strSentence, strGetSentence = "" ; if (pFile) { BOOL result = pFile->SendRequest(strHeaders, ( LPVOID )( LPCTSTR )strFormData, strFormData.GetLength()); while (pFile->ReadString(strSentence)) // 读取提交数据后的返回结果 strGetSentence = strGetSentence + strSentence + char (13) + char (10); pFile->Close(); delete pFile; sess.Close(); return string(strGetSentence.GetBuffer()); } return "" ; } |
1 2 3 4 5 | string strResult = "" ; string strServerName = "www.test.com" ; string strFormActionUrl = "/index.php" ; string strPostData = "username=" + strUserName + "&password=" + strPassword; strResult = SendURLPost(strServerName, strFormActionUrl, strPostData); |
这个方法有个缺陷, 网络不通SendRequest会等待几十秒, 感觉像卡死了似的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?