用下面的代码post xml到服务器页。
客户端不需要证书。
但是收不到任何数据,发送似乎也不成功,但是服务器是远端的没法调试。
抓包看了一下发出去的数据包确实是HTTPS包。
但就是不成功。没思路了抓狂。请教高人相助啊!分也就剩60了抱歉!
嫌不够我再用另一个账号给。参考的这篇文章
http://www.codeproject.com/internet/wininet_ssl___certificate.asp?df=100&forumid=15078&exp=0&select=930788#xx930788xx
BOOL CXXX::SendHttpRequest(CString strXml, CString &strRcv)
{
void* m_hInternet = NULL;
void* m_hSession = NULL;
void* m_hRequest = NULL;
void* m_hStore = NULL;
void* m_pContext = NULL; int m_secureFlags = INTERNET_FLAG_RELOAD|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_CACHE_WRITE|
INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID; try
{
m_hInternet = InternetOpen("MY app", INTERNET_OPEN_TYPE_PRECONFIG , NULL, NULL, 0);
if (!m_hInternet)
{
::AfxMessageBox("Cannot open internet");
//m_lastErrorCode = GetLastError();
return false;
}

m_hSession = InternetConnect(m_hInternet, "www.XXX.com", 443, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if (!m_hSession) {
::AfxMessageBox("Cannot connect to internet");
//m_lastErrorCode = GetLastError();
//ClearHandles();
return false;
}
m_hRequest = HttpOpenRequest(m_hSession, 
"POST",
"/service/page.cgi",
NULL,
"",
NULL,
m_secureFlags, 
0);
if (!m_hRequest) {
::AfxMessageBox("Cannot perform http request");
//m_lastErrorCode = GetLastError();
//ClearHandles();
return false;
}

int result =  HttpSendRequest(m_hRequest, NULL, 0, (void*)((LPCTSTR)strXml), strXml.GetLength());
if (result)
{
::AfxMessageBox("yes");//能执行到这里
}
}
catch(...) {
::AfxMessageBox("Memory Exception occured");
//m_lastErrorCode = GetLastError();
return false;
} DWORD dwNumberOfBytesRead;
char sz[2048];
int result;
strRcv = "";
do
{
result = InternetReadFile(m_hRequest, sz, 2047, &dwNumberOfBytesRead);
sz[dwNumberOfBytesRead] = '\0';
int x = strlen(sz);
strRcv += sz;
memset(sz, 0, 2048);

} while(result && dwNumberOfBytesRead != 0); ::AfxMessageBox(strRcv);//strRcv为空,收不到任何数据?
return TRUE;
}

解决方案 »

  1.   

    如果服务器端是CGI, ISAPI的话是不是POST跟ASP有区别?
      

  2.   

    区别应该不大,你可以实际post试试.看看服务器能不能收到
      

  3.   

    如果把
    secureFlags2 = INTERNET_FLAG_EXISTING_CONNECT(普通post)
    则无法连接服务器, m_secureFlags = INTERNET_FLAG_RELOAD|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_CACHE_WRITE|
    INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID;可以连上,但是post没法反应也没有响应是怎么回事啊
      

  4.   

    Malformed HTTPS request 400 bad request