void CMFCApplication2Dlg::OnBnClickedButton1()
{
UpdateData(TRUE);
CString a;
CString strURL, strPostData;
strURL = _T("http://w.eydata.net/9edd026122718f37");
strPostData = L"SingleCode=M2AB78665961AA730C0A533B254DD0D2&Ver=1.0.0&Mac=";//SingleCode這個就是卡密,我100%確定是正確的,但是回傳的-401就是卡密錯誤
CString str(_T(""));
CString& strHTML = str;
if (PostDataBase(strURL, strPostData, strHTML))
{
a = strHTML;
}
else{
a += "error";
}
MessageBox(a);
}
BOOL CMFCApplication2Dlg::PostDataBase(CString strURL, CString strPostData, CString& strHTML)
{
try
{
BOOL bRet;
CString strServer, strObject, strHeader, strRet;
unsigned short nPort;
DWORD dwServiceType;
if (!AfxParseURL(strURL, dwServiceType, strServer, strObject, nPort))
return FALSE;
CInternetSession sess; //創建會話
CHttpFile* pFile;
//////////////////////////////////////////////
CHttpConnection *pServer = sess.GetHttpConnection(strServer, nPort);
if (pServer == NULL)
return FALSE;
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT);
if (pFile == NULL)
return FALSE;
pFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded"));
pFile->AddRequestHeaders(_T("Accept: */*"));
pFile->SendRequest(NULL, 0, (LPTSTR)(LPCTSTR)strPostData, strPostData.GetLength());
CString strSentence;
DWORD dwStatus;
DWORD dwBuffLen = sizeof(dwStatus);
BOOL bSuccess = pFile->QueryInfo(
HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
&dwStatus, &dwBuffLen);
if (bSuccess && dwStatus >= 200 && dwStatus<300)
{
char buffer[1024 * 56];
memset(buffer, 0, 1024 * 56);
int nReadCount = 0;
while ((nReadCount = pFile->Read(buffer, 1024 * 56)) > 0)
{
strHTML += buffer;
memset(buffer, 0, 1024 * 56);
}
bRet = TRUE;
}
else
{
bRet = FALSE;
}
////////////////////////////////////////
pFile->Close();
sess.Close();
return bRet;
}
catch (...)
{
int nCode = GetLastError();
return FALSE;
}
}
uj5u.com熱心網友回復:
僅供參考:void HexDump(char *buf,int len,int addr) {
int i,j,k;
char binstr[80];
for (i=0;i<len;i++) {
if (0==(i%16)) {
sprintf(binstr,"%08x -",i+addr);
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
} else if (15==(i%16)) {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
sprintf(binstr,"%s ",binstr);
for (j=i-15;j<=i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
} else {
sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
}
}
if (0!=(i%16)) {
k=16-(i%16);
for (j=0;j<k;j++) {
sprintf(binstr,"%s ",binstr);
}
sprintf(binstr,"%s ",binstr);
k=16-k;
for (j=i-k;j<i;j++) {
sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
}
printf("%s\n",binstr);
}
}
uj5u.com熱心網友回復:
什么意思轉16進制嗎,小白啊麻煩解釋注釋下啊
uj5u.com熱心網友回復:
用Fiddler抓包,對比一下瀏覽器的POST請求和你的POST請求有什么差異uj5u.com熱心網友回復:
就是易游WEBAPI登錄,誰知道MFCpost是怎么回事啊,怎么post都是回傳錯誤uj5u.com熱心網友回復:
建議樓主先學會使用抓包軟體比如wiresharkuj5u.com熱心網友回復:

怎么把CString 轉換LPVOID型別網上的那些都有問題轉換過來用psot就有問題
uj5u.com熱心網友回復:
自己抓個包對比一下就很清楚了。/
不會是編碼的問題吧?切換工程到多位元組編碼試試??
uj5u.com熱心網友回復:
嘗試轉換成utf8編碼,再POST轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/126465.html
標籤:網絡編程
上一篇:MFC應用程式(exe)的使用
