Всем привет. Нашлось у меня время и решил попробовать поработать с SSL.
Пишу на C++. Использую WinInet MFC. Для примера решил взять stats.tenet.ua.
Сперва сниффером глянул, как происходит авторизация при работе из браузера. Затем почитал MSDN и написал вот такой код:
Код:
#define _AFXDLL
#include <iostream>
#include <string>
#include <afxinet.h>
using namespace std;
void main()
{
CInternetSession is("SSL test");
CHttpConnection* httpConnection = NULL;
httpConnection = is.GetHttpConnection("stats.tenet.ua",INTERNET_FLAG_SECURE,443, "name", "password");
char tmpBuf[1000];
CString accept;
if (httpConnection!=NULL)
{
CHttpFile* httpFile = NULL;
httpFile = httpConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, "/portal/wwv_flow.accept",0,1,0,0,INTERNET_FLAG_SECURE|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_AUTO_REDIRECT);
CString strHeaders =_T("Accept-Encoding:identity\r\nHost:stats.tenet.ua\r\nContent-type:application/x-www-form-urlencoded\r\n");
CString formData = _T("p_t01=name&p_t02=password&p_request=P1_PASSWORD");
httpFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)formData, formData.GetLength());
CString query;
httpFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF,query,NULL);
cout<<query;
}
is.Close();
В ответ от сервера нужно получить location с новой ссылкой, соответственно код ответа - 302. Но не выходит. Получаю код 200, типа все ок и вот такой html код
Код:
<div class="ErrorPageMessage">Expecting p_company or wwv_flow_company cookie to contain security group id of application owner.</div><table summary=""><tr><td><img src="/i/error.gif" border="0" /></td>
<td>Error</td>
<td>ERR-7621 Could not determine workspace for application (:) on application accept.
</td></tr>
<tr><td><a href="javascript:window.history.go(-1)">OK</a></td>
<td><br /></td></tr></table>
<script type="text/javascript">
<!--
//-->
</script>
По моим предположениям - не хватает какой-то информации для авторизации.
Надеюсь на вашу помощь, так как уже не могу придумать решения данной проблемы.
Социальные закладки