CInternetSession署理POST数据返回the connection with the server was reset
CInternetSession代理POST数据返回the connection with the server was reset
自己最近在用MFC实现向服务器post表单数据的客户端,在做代理的时候参照了几位前辈的代码,但是一直有个问题解决不了,代理的设置代理如下,当我用pHttpFile-> SendRequest(NULL)发送的时候,可以获取服务器返回的数据,但是当我使用
pHttpFile-> SendRequest(NULL,0,(void *)szData,strlen(szData));发送表单数据的时候,会报错"the connection with the server was reset",请各位前辈帮忙,多谢![/
------解决方案--------------------
你的方法应该也是可以的
自己最近在用MFC实现向服务器post表单数据的客户端,在做代理的时候参照了几位前辈的代码,但是一直有个问题解决不了,代理的设置代理如下,当我用pHttpFile-> SendRequest(NULL)发送的时候,可以获取服务器返回的数据,但是当我使用
pHttpFile-> SendRequest(NULL,0,(void *)szData,strlen(szData));发送表单数据的时候,会报错"the connection with the server was reset",请各位前辈帮忙,多谢![/
- C/C++ code
CString CInterNetSessionProxyDlg::GeHttptFile(const char *url ,char * Proxy,char *UseName, char * Password,char * szData) { CString szContent; char strProxyList[MAX_PATH], strUsername[64], strPassword[64]; strcpy(strProxyList,Proxy); strcpy(strUsername,UseName); strcpy(strPassword,Password); DWORD dwServiceType = AFX_INET_SERVICE_HTTP; CString szServer, szObject; INTERNET_PORT nPort; AfxParseURL(url, dwServiceType, szServer, szObject, nPort); CInternetSession mysession; CHttpConnection* pConnection; CHttpFile* pHttpFile; DWORD dwHttpStatus; CString szHeader = _T("Accept: */*\r\nAccept-Language: zh-cn\r\nContent-Type: application/x-www-form-urlencoded\r\n"); try { pConnection = mysession.GetHttpConnection(szServer,INTERNET_FLAG_KEEP_CONNECTION,INTERNET_INVALID_PORT_NUMBER,NULL,NULL); pHttpFile = pConnection-> OpenRequest( "POST",szObject,NULL,0,NULL,NULL,INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_DONT_CACHE); INTERNET_PROXY_INFO proxyinfo; proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY; proxyinfo.lpszProxy = strProxyList; proxyinfo.lpszProxyBypass = NULL; mysession.SetOption(INTERNET_OPTION_PROXY,(LPVOID)&proxyinfo,sizeof(INTERNET_PROXY_INFO)); pHttpFile-> SetOption(INTERNET_OPTION_PROXY_USERNAME,strUsername,strlen(strUsername)+1); pHttpFile-> SetOption(INTERNET_OPTION_PROXY_PASSWORD,strPassword,strlen(strPassword)+1); pHttpFile->AddRequestHeaders(szHeader); //pHttpFile-> SendRequest(NULL); pHttpFile-> SendRequest(NULL,0,(void *)szData,strlen(szData)); if (pHttpFile) { if(pHttpFile->QueryInfoStatusCode(dwHttpStatus)!=0) { if ((dwHttpStatus/100)*100 == HTTP_STATUS_OK) { CString tmp; while(pHttpFile->ReadString(tmp)) { szContent+=tmp; } } } } } catch (CInternetException* e) { char cBuf[255]; CString temp; e->GetErrorMessage(cBuf, 255); temp.Format("CSMSSubmit::HttpPost Failed,Error code:%d,Detail:%s",e->m_dwError,cBuf); e->Delete(); szContent=temp; } if(pHttpFile!=NULL) { pHttpFile->Close(); delete pHttpFile; } if(pConnection != NULL) { pConnection->Close(); delete pConnection; } mysession.Close(); return szContent; }
------解决方案--------------------
你的方法应该也是可以的