zoukankan      html  css  js  c++  java
  • CInternetSession CHttpFile Post提交数据

    //给指定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 "";
    }
    

      

    string strResult = "";
    	string strServerName = "www.test.com";
    	string strFormActionUrl = "/index.php";
    	string strPostData = "username=" + strUserName + "&password=" + strPassword;
    strResult = SendURLPost(strServerName, strFormActionUrl, strPostData);
    

      

    这个方法有个缺陷, 网络不通SendRequest会等待几十秒, 感觉像卡死了似的.

  • 相关阅读:
    Oracle 存储过程_(收集)
    Oracle job procedure 存储过程定时任务(转自hoojo)
    windows环境下,Jenkins的安装和基础配置
    如何使用IntelliJ IDEA 配置Maven
    在IntelliJ IDEA中安装Junit,TestNG
    JAVA 操作 properties 配置文件
    Java语法----Java中equals和==的区别(转载)
    由于网页点击速度过快,导致selenium无法定位到元素的问题
    使用IntelliJ idea运行selenium3.0
    selenium webdriver java环境配置
  • 原文地址:https://www.cnblogs.com/barrysgy/p/3723093.html
Copyright © 2011-2022 走看看