COM:提交表单返回405错误
void CWebGameView::OnDocumentComplete(LPCTSTR lpszURL)
{
// TODO: 在此添加专用代码和/或调用基类
CHtmlView::OnDocumentComplete(lpszURL);
//获得源码
CString strSource;
GetSource(strSource);
BOOL bRetVal = FALSE;
CComPtr<IDispatch> spDisp = GetHtmlDocument();
//CComQIPtr<IHTMLDocument2> spPersistStream = spDisp;
m_hdtHtmlMonitor = spDisp;
if( _tcscmp(lpszURL, _T("http://xxx/xx/index/")) == 0)
{
LoginGame();
}
}
DWORD CWebGameView::LoginGame()
{
IHTMLInputTextElement *ppvhInputElemt = NULL;
IHTMLFormElement *ppvhFormElemt = NULL;
IDispatch *ppvdispOption = NULL;
IHTMLElementCollection *ppvhElemtCollection = NULL;
COleVariant vatIndexForm( (long)0);
HRESULT hResult;
CString strUserName;
CString strPassword;
//从对话框输入用户名密码
m_pdlLogin = new CDialogLogin();
if( m_pdlLogin->DoModal() == IDOK)
{
strUserName = m_pdlLogin->GetLoginUserName();
strPassword = m_pdlLogin->GetLoginPassword();
}
//用户名输入控件
hResult = m_hdtHtmlMonitor->get_all(&ppvhElemtCollection);
hResult = ppvhElemtCollection->item( COleVariant(_T("username")), vatIndexForm, &ppvdispOption);
hResult = ppvdispOption->QueryInterface(IID_IHTMLInputTextElement, (void**)&ppvhInputElemt);
hResult = ppvhInputElemt->put_value( strUserName.GetBuffer());
ppvhInputElemt->Release();
ppvdispOption->Release();
//密码输入控件
ppvhElemtCollection->item( COleVariant(_T("password")), vatIndexForm, &ppvdispOption);
hResult = ppvdispOption->QueryInterface(IID_IHTMLInputTextElement, (void**)&ppvhInputElemt);
ppvhInputElemt->put_value( strPassword.GetBuffer());
ppvhInputElemt->Release();
ppvdispOption->Release();
//提交表单
hResult = ppvhElemtCollection->item( COleVariant(_T("lgform")), vatIndexForm, &ppvdispOption);
hResult = ppvdispOption->QueryInterface(IID_IHTMLFormElement, (void**)&ppvhFormElemt);
hResult = ppvhFormElemt->submit();
ppvhFormElemt->Release();
ppvdispOption->Release();
ppvhElemtCollection->Release();
return 0;
}
<form id="lgform" name="lgform" method="post" action="" onsubmit="FormSubmit();return false;">
<div class="loginInfo">
<p>
<label>用户名:</label>
<input type="text" name="username" id="username" class="text" />
</p>
<p>
<label>密 码:</label>
<input type="password" name="password" id='password' class="text" />
</p>
<p>
<label> </label>
<input type="checkbox" id="autoLogin" name="autoLogin" value="true" class="checkbox" />
记住我的登录状态</p>
<p>
<label> </label>
<input name="Submit" type="submit" class="button" value=""/>
<a id="fp" href="https://passport.baidu.com/?getpass" >忘记密码</a></p>
</div>
<input type='hidden' value='yx' name='tpl' />
<input type='hidden' name='u' id='ru' value='' />
</form>
当我在LoginGame()里面提交表单完成后,在OnDocumentComplete里面获得了与提交表单页同样的url,但GetSource()后发现内容如下:
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
请高手指点下,是啥问题,表单需要提交的数据也就是用户名和密码了,我都填写了;用户名和密码肯定是正确的
[解决办法]
贴出 FormSubmit()这个js 函数的代码?
[解决办法]
直接网页登陆可以么。
FormSubmit里面调试看看
[解决办法]
通过xmlhttp组件提交