WinInet API

luckyboy101 2009-05-25 03:48:59
学习一下WinInet API来实现表单提交,以开心网为测试,代码如下
UpdateData(true);
CString strHeaders =_T("Content-Type: application/x-www-form-urlencoded");
CString strFormData = _T("email=");
strFormData+=m_username;
strFormData+=_T("&password=");
strFormData+=m_password;
CInternetSession session;
CHttpConnection* pConnection =session.GetHttpConnection(_T("kaixin001.com"));
CHttpFile* pFile =pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,_T("home"));

BOOL result = pFile->SendRequest(strHeaders,(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
为何登陆不了,请高手指点
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenshouzhuifeng 2011-11-17
  • 打赏
  • 举报
回复
呵呵,一般的在浏览器上登录后跳转到其它的页面是因为其实是跳转到了另外一个url,,你不用管它返回的是否是登录页面,请求一个本来需要登录的才可以浏览的页面,看下结果就知道有没有成功了
luckyboy101 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 biweilun 的回复:]
C/C++ code
CInternetSession* m_pSession;
CHttpConnection* m_pCon;
m_pCon = m_pSession->GetHttpConnection(HTTP_SERVER, 0, HTTP_SERVER_PORT);
if (m_pCon != NULL)
{
CHttpFile* pFile = NULL;
try
{
pFile = m_pCon->OpenRequest(CHttpConnection::HTTP_VERB_GET,
lpszCommand, lpszRefer);
if (pFile != NULL)
{
pFile->AddRe…
[/Quote]
用了你的代码也没解决
luckyboy101 2009-05-25
  • 打赏
  • 举报
回复
email siheng303@163.com
password 110110110
url /home/
这个是抓包出来的post data
luckyboy101 2009-05-25
  • 打赏
  • 举报
回复
能不能具体点,或者给个参考资料
金金2019 2009-05-25
  • 打赏
  • 举报
回复
winnet API 超时设置有问题
^_^

所有设置一个等待线程
luckyboy101 2009-05-25
  • 打赏
  • 举报
回复
就是这些不太懂,刚开始学,请指教
greatws 2009-05-25
  • 打赏
  • 举报
回复
这种问题的解决方法最好是抓包,从浏览器上登录一次,看下数据包,和你程序发出和接收的数据包或者HTTP Request做对比,看看少了什么或者多了什么。
luckyboy101 2009-05-25
  • 打赏
  • 举报
回复
代码是没啥问题的,就是访问的地址不是太确定,,_T("home")不知道对不对
biweilun 2009-05-25
  • 打赏
  • 举报
回复

CInternetSession* m_pSession;
CHttpConnection* m_pCon;
m_pCon = m_pSession->GetHttpConnection(HTTP_SERVER, 0, HTTP_SERVER_PORT);
if (m_pCon != NULL)
{
CHttpFile* pFile = NULL;
try
{
pFile = m_pCon->OpenRequest(CHttpConnection::HTTP_VERB_GET,
lpszCommand, lpszRefer);
if (pFile != NULL)
{
pFile->AddRequestHeaders(ACCEPT_TYPE);
pFile->AddRequestHeaders(ACCEPT_LANGUAGE);
pFile->AddRequestHeaders(ACCEPT_ENCODING);
pFile->AddRequestHeaders(CONNECTION_TYPE);
pFile->SendRequest();
DWORD dwStatusCode = 0;
pFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode != 200)
{
pFile->Close();
delete pFile;
}
}
}
catch (CInternetException *pEx)
{
CString szError;
pEx->GetErrorMessage(szError.GetBuffer(MAX_PATH), MAX_PATH);
szError.ReleaseBuffer();
TRACE("SendRequest exception. Error message : %s\n", szError);
pEx->Delete();
}
}


参考这个
luckyboy101 2009-05-25
  • 打赏
  • 举报
回复
没提示错误,我用下面的代码写入文件
HANDLE hFile;
hFile = CreateFile("a.html", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{

return ;
}
DWORD dwWrited;


const int size = 23000;
byte pByte[size]={0};
int count = 0;
while( ( count = pFile->Read(pByte,size) ) > 0 )
{
WriteFile(hFile, pByte,count, &dwWrited, NULL);
m_tmp+=pByte;
}
CloseHandle(hFile);
写入的文件一直是登陆页面,没有登陆进去
alibabademama 2009-05-25
  • 打赏
  • 举报
回复
有什么错误提示啊












--------------完美的签名线-----------------
游戏开发第一站 http://dev.web863.com

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧