Парсинг сайта в metro-приложении.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

kaktuz
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 05.09.2012 (Ср) 8:02

Парсинг сайта в metro-приложении.

Сообщение kaktuz » 05.09.2012 (Ср) 8:18

Подскажите, как можно программно в metro-приложении загрузить сайт, программно ввести логин-пароль, программно нажать кнопку входа, и после загрузки считать нужные данные? В обычных Windows-приложениях я делал это через компонент WebBrowser, и проблем не возникало. А вот в metro такого компонента нет... Естественно, программирую (пытаюсь) на Visual Studio 2012.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Парсинг сайта в metro-приложении.

Сообщение FireFenix » 05.09.2012 (Ср) 8:45

Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.09.2012 (Ср) 8:53

Прочитай эту тему.

kaktuz
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 05.09.2012 (Ср) 8:02

Re: Парсинг сайта в metro-приложении.

Сообщение kaktuz » 14.09.2012 (Пт) 18:59

Спасибо за ответы. По указанным ссылкам прочитал очень много полезного и нового. Но все же, своей первоначальной цели не достиг. Короче, есть сайт - my.kyivstar.ua - сайт провайдера инета. Задача - программно залогиниться, и получить сумму денег на балансе. Вот и все. Конкретно, у меня никак не получается правильно послать запрос, авторизоваться и получить страницу с балансом. Огроменная просьба :D : помогите разобраться!!! Заранее большое спасибо.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.09.2012 (Пт) 21:23

Возможно, дело в протоколе https. Хотя не думаю, что тут должны быть проблемы.

В форме больше значений, чем ты видишь:
Код: Выделить всё
<form name="loginForm" method="post" action="/tbmb/login/perform.do" onsubmit="return SendForm();"><input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="e875bb65e29ba20948816217dee80c06">
<input type="hidden" name="isSubmitted" value="false" id="isSubmitted">
<input type="hidden" name="USERNAME" value=""/>
<input type="hidden" name="USER_NAME" value=""/>
<input type="hidden" name="ORIG_URL" value=""/>
<input type="hidden" name="isInetUser" value="null"/>
<input type="hidden" name="buser" value=""/>
<input type="hidden" name="bpath" value=""/>
<tr>
<td class="td"><nobr>Логін:</nobr></td>
<td class="td">
<input type="text" name="user" maxlength="60" value="" style="width:140;" id="userNameId">
</td>
</tr>
<tr>
<td class="td"><nobr>Пароль:</nobr></td>
<td class="td"><input type="password" name="password" maxlength="30" size="32" value="" style="width:140;"></td>
</tr>
<tr>
<td class="td">&nbsp;</td>
<td class="td"><input type="submit" name="Submit" value="Вхід в систему"></td>
</tr>
<input type="hidden" name="value(jumpTo)" value="">
<input type="hidden" name="value(jumpToUrl)" value="">
</form>
а ещё, есть такая функция:
Код: Выделить всё
function SendForm() {
var uid = document.getElementById('userNameId').value;
uid = trim(uid);
document.getElementById('userNameId').value = uid;
if ($('isSubmitted').value == 'true') {
return false;
} else {
$('isSubmitted').value = 'true';
return true;
}
}
function trim(string) {
return string.replace(/(^\s+)|(\s+$)/g, "");
}

kaktuz
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 05.09.2012 (Ср) 8:02

Re: Парсинг сайта в metro-приложении.

Сообщение kaktuz » 15.09.2012 (Сб) 21:43

Ок, допустим запрос с горем пополам отправил. Но получить ответ никак не выходит: в HttpWebRequest нету функции GetResponse!!! Есть GetResponseAsync, но как ее использовать - ума не приложу... Напоминаю - создаю приложение под Metro. В обычном настольном в принципе проблем нет - там все это есть. Помогите разобраться - реально загорелся идеей, а сделать не могу - аж не по себе :alien:

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Парсинг сайта в metro-приложении.

Сообщение FireFenix » 15.09.2012 (Сб) 22:54

Версия фреймворка?

Хотя во всех версиях фреймворка существует метод GetResponse.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 15.09.2012 (Сб) 23:13

kaktuz писал(а):Напоминаю - создаю приложение под Metro.

Какая разница? Этот класс не связан никак с интерфейсом.

kaktuz писал(а):в HttpWebRequest нету функции GetResponse!!!

Должен быть. Ты точно как этот класс объявляешь переменную?

kaktuz
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 05.09.2012 (Ср) 8:02

Re: Парсинг сайта в metro-приложении.

Сообщение kaktuz » 16.09.2012 (Вс) 7:10

FireFenix писал(а):Версия фреймворка?

4.5
Qwertiy писал(а):Должен быть. Ты точно как этот класс объявляешь переменную?

Да. Ниже скриншот, на котором видно и сам код, и варианты функций.

ИзображениеИзображение

И кстати, полностью рабочий в десктопном варианте кусок кода по отправке запросов и получению ответов, не работает под метро - нет нужных функций :(

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 16.09.2012 (Вс) 10:37

А если перейти со вкладки "Общий" на вкладку "Все"?!

kaktuz
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 05.09.2012 (Ср) 8:02

Re: Парсинг сайта в metro-приложении.

Сообщение kaktuz » 16.09.2012 (Вс) 12:36

Qwertiy писал(а):А если перейти со вкладки "Общий" на вкладку "Все"?!

Аналогично - та же беда :x

ИзображениеИзображение

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 16.09.2012 (Вс) 13:19

Напиши руками и попробуй скомпилировать.

kaktuz
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 05.09.2012 (Ср) 8:02

Re: Парсинг сайта в metro-приложении.

Сообщение kaktuz » 16.09.2012 (Вс) 14:09

Qwertiy писал(а):Напиши руками и попробуй скомпилировать.

Пробовал уже...
ИзображениеИзображение

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 16.09.2012 (Вс) 22:36

А ты всё что надо подключил? В MSDN написано, что есть.

kaktuz
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 05.09.2012 (Ср) 8:02

Re: Парсинг сайта в metro-приложении.

Сообщение kaktuz » 17.09.2012 (Пн) 7:41

Qwertiy писал(а):А ты всё что надо подключил?

Если ты имеешь ввиду это:
Код: Выделить всё
Imports System.Net

- то да, подключил.
Я же уже выше писал: если взять полностью рабочий кусок кода с десктопного приложения, реализующий отправку и прием запросов, и вставить его в приложение под метро - он не будет работать...

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Парсинг сайта в metro-приложении.

Сообщение Admiralisimys » 17.09.2012 (Пн) 12:40

kaktuz писал(а):в HttpWebRequest нету функции GetResponse!!! Есть GetResponseAsync, но как ее использовать - ума не приложу...

И не может быть такая функция в синхронном виде в WinRT, ибо она отработает более 50мс что противоречит философии WinRT.
It’s important to know that every WinRT APIs that possibly takes longer than 50ms to execute are asynchronous by default in Windows 8. It helps us to guarantee having fast & fluid applications. The UI thread is then not blocked to preserve the user’s experience. But this doesn’t mean that the code become more complex to write in counterpart. >>

Так что нужно осваивать этот концепт.

P.S.
По самой программе, а вы не думает что интернет провайдер сам захочет создать и разместить такой продукт в маркете, а потом как твиттер заблочить не желательные клиенты от сторонних разработчиков? Не ради практики (и на первое время наверное для личных нужд/запуска на своём ПК) разрабатывайте конечно, но при сертификации об этом и в MS могут задуматься.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 17.09.2012 (Пн) 14:05

kaktuz писал(а):Если ты имеешь ввиду это:

Не директива Imports a reference в проекте.

Admiralisimys писал(а):И не может быть такая функция в синхронном виде в WinRT, ибо она отработает более 50мс что противоречит философии WinRT.

Почему в MSDN под Framework 4.5 написано, что есть?

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Парсинг сайта в metro-приложении.

Сообщение Admiralisimys » 17.09.2012 (Пн) 14:48

То для десктопа. Здесь всё же работаем через .NET for Windows Store apps
Я соглашусь с тем, что только одна документация может вводить в заблуждение
Dev Center - Metro style apps > Docs > HttpWebRequest Class
но видимо и дисклеймер не зря
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.


А так Object Browser в студии такого метода не знает.
There_are_no_GetResponse.png

Ну и вот методы WebRequest
WebRequest.png
от которого наследуется HttpWebRequest.

kaktuz для справки просмотрите Асинхронное программирование в C# 5, хоть для метро Windows Store App я бы взял за основу MetroPad SimplePad с Programming Windows, Sixth Edition > Companion Content

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 17.09.2012 (Пн) 20:23

Admiralisimys писал(а):И не может быть такая функция в синхронном виде в WinRT, ибо она отработает более 50мс что противоречит философии WinRT.

Тогда .NET 4.5 - это гадость, которой абсолютно нет желания пользоваться.

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Парсинг сайта в metro-приложении.

Сообщение Admiralisimys » 17.09.2012 (Пн) 20:31

Он здесь не причём
kaktuz писал(а):полностью рабочий в десктопном варианте кусок кода по отправке запросов и получению ответов, не работает под метро - нет нужных функций :(

Нужных функций нет в - .NET for Windows Store apps, так как их нет в самом WinRT

Поддержка Windows 8 это малая, но весьма важная для MS, часть в .NET 4.5, см. постер http://www.heikniemi.net/hardcoded/2011 ... -5-poster/


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

    TopList