День добрый!
Есть сайт
https://www.portfolio123.com/, хочу тянуть данные из него, но не получается авторизоваться из собственного приложения.
Исследую запрос через утилиты браузеров, которые отображают передачу моих "ручных" запросов POST.
Запрос отправляется такой: "LoginUsername=мояпочта@почта.ru&LoginPassword=пароль&LoginRememberMe=1&Login=Login&url=index.jsp"
Как представлять index.jsp, остается загадкой.
//Создаем запрос
HttpWebResponse result = null;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://www.portfolio123.com/login.jsp?url=");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] SomeBytes = null;
string FormParams = "LoginUsername=мояпочта@почта.ru&LoginPassword=пароль&LoginRememberMe=1&Login=Login&url=index.jsp";
SomeBytes = Encoding.UTF8.GetBytes(FormParams);
req.ContentLength = SomeBytes.Length;
Stream newStream = req.GetRequestStream();
newStream.Write(SomeBytes, 0, SomeBytes.Length);
newStream.Close();
result = (HttpWebResponse)req.GetResponse();
//Получаем куки
string[] cookieVal = null;
if (result.Headers["Set-Cookie"] != null)
cookieVal = result.Headers["Set-Cookie"].Split(new char[] { ',' });
Stream ReceiveStream = result.GetResponseStream();
Encoding encode = Encoding.GetEncoding("utf-8");
StreamReader sr = new StreamReader(ReceiveStream, encode);
string answer = sr.ReadToEnd();
sr.Close();
result.Close();
CookieContainer cookie = new CookieContainer();
foreach (string cook in cookieVal)
{
string[] cookie1 = cook.Split(new char[] { ';' });
cookie.Add(new Cookie(cookie1[0].Split(new char[] { '=' })[0], cookie1[0].Split(new char[] { '=' })[1], cookie1[1].Split(new char[] { '=' })[1], "www.portfolio123.com"));
}
//запрос на скачивание нужного нам файлика, используя куки
string url = "https://www.portfolio123.com/p123/DownloadStockRank?mktUid=4737&ticker=IBM&rankUid=361&rankName=Balanced4";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = cookie;
request.Method = "GET";
request.ContentType = "application/octet-stream;charset=ISO-8859-1";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream ReceiveStream1 = response.GetResponseStream();
StreamReader sr1 = new StreamReader(ReceiveStream1, encode);
string html = sr1.ReadToEnd();
response.Close();
— пример кода, должен делать запрос на авторизацию, получить куки и использовать их для дальнейшей работы, а именно для скачивания файлика. Но в результате, что уже только не перепробовал, одно и то же — получаем страничку html с запросом на авторизацию! полагаю, что авторизация не проходит и дело в index.jsp, но как его готовить?