可以参考如下post网络数据的代码:
CString strSecret = "456def";
int ret = 0;
CString m_strRequest = "nonce=1138197510251393"; //随机数
char ret_buf[SHA512_DIGEST_SIZE + 1] = {0}; //SHA512_DIGEST_SIZE = 64
char *base64_ret = NULL;
ret = hmac_sha512(strSecret.GetBuffer(0), strSecret.GetLength(),
m_strRequest.GetBuffer(0), m_strRequest.GetLength(), ret_buf);
if (ret < 0) {
MessageBox("加密出错!");
return;
}
ret = base64_encode_alloc(ret_buf, SHA512_DIGEST_SIZE, &base64_ret);
CString strSign = "";
strSign .Format("%s", base64_ret);
if(base64_ret != NULL) {
free(base64_ret);
} else {
MessageBox("转码出错!");
return;
}
CString m_strServerName = "cn.bter.com";
CString m_strObjectName = "api/1/private/getfunds";
CInternetSession m_InetSession("session");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
try{
INTERNET_PORT nPort;
nPort=80;
pServer = m_InetSession.GetHttpConnection(m_strServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,
m_strObjectName);
CString strHeader = "Accept: text*/*\r\nContent-Type: application/x-www-
form-urlencoded";
//strcpy_s(szHeaders, strTemp.GetLength(), strTemp.GetBuffer(0));
strHeader += "\r\nKey=abcd123";
strHeader += "\r\nSign=";
strHeader += strSign;
pFile->AddRequestHeaders(strHeader.GetBuffer(0));
pFile->SendRequestEx(m_strRequest.GetLength());
pFile->WriteString(m_strRequest);
pFile->EndRequest();
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
CString str;
//m_Mutex.Lock();
CString m_strHtml="";
char szBuff[1024];
if (dwRet == HTTP_STATUS_OK){
UINT nRead;
while ((nRead = pFile->Read(szBuff,1023))>0)
{
m_strHtml+=CString(szBuff,nRead);
}
}
//m_Mutex.Unlock();
MessageBox(m_strHtml);
delete pFile;
delete pServer;
}
catch (CInternetException* e){
CString s;
s.Format("Internet Exception\r\nm_dwError%u,m_dwContextError%u",e-
>m_dwError,e->m_dwContext);
AfxMessageBox(s);
//catch errors from WinInet
}