C# tekst van een website krijgen

Status
Niet open voor verdere reacties.
Wat lukt precies niet?

Hier kun je bijvoorbeeld de bron van de pagina mee ophalen.

Code:
var url = "http://roosters.gepro-osi.nl/roosters/rooster.php?wijzigingen=1&leerling=101352&type=Leerlingrooster&afdeling=4gym&school=620";

var request = WebRequest.Create(url);
var response = request.GetResponse();

var responseStream = response.GetResponseStream();
if (responseStream != null)
{
    using (var reader = new StreamReader(responseStream))
    {
        var source = reader.ReadToEnd();
    }
}
 
Wat lukt precies niet?

Hier kun je bijvoorbeeld de bron van de pagina mee ophalen.

Code:
var url = "http://roosters.gepro-osi.nl/roosters/rooster.php?wijzigingen=1&leerling=101352&type=Leerlingrooster&afdeling=4gym&school=620";

var request = WebRequest.Create(url);
var response = request.GetResponse();

var responseStream = response.GetResponseStream();
if (responseStream != null)
{
    using (var reader = new StreamReader(responseStream))
    {
        var source = reader.ReadToEnd();
    }
}

Bij mij komt er te staan dat GetResponse fout is. Ik snap ook niet hoe ik bijvoorbeeld mijn eerste lesuur in de app krijg
 
Sorry, was even vergeten dat het een app was.

Als je de StartDownloadSource method aanroept in een button click event zal de source gedownload worden, dan moet je de html parsen. Lukt dat wel?

[CPP]private void StartDownloadSource()
{
var url = "http://roosters.gepro-osi.nl/roosters/rooster.php?wijzigingen=1&leerling=101352&type=Leerlingrooster&afdeling=4gym&school=620";

var request = WebRequest.Create(url);
request.BeginGetResponse(ResponseCallback, request);
}
private void ResponseCallback(IAsyncResult asyncResult)
{
var request = (WebRequest)asyncResult.AsyncState;
var response = request.EndGetResponse(asyncResult);

var responseStream = response.GetResponseStream();
if (responseStream != null)
{
using (var reader = new StreamReader(responseStream))
{
var source = reader.ReadToEnd();
}
}
}[/CPP]
 
Ik zal na het eten even een voorbeeld maken om data te verkrijgen, hoe bekend ben je met C# / VS2012/13 en WP apps?
 
ik heb al een simpele app gemaakt, maar ik ben nog niet heel er bekend met C# en VS 2012.
 
Ik heb vs2013 maar als het goed is kun je deze wel openen in vs2012.

Rooster Sample

Alleen als beginner denk ik dat het even puzzelen is, er zijn 2 references (.dll's) toegevoegd om de html te parsen.


Ik heb een class 'Subject' met maar even A/B/C/D properties als voorbeeld. (A:wa - B:20 - C:ECON - D:3)

Als de pagina source gedownload is zoek ik naar de juiste plaats voor de dingen op de pagina en pak de tekst die tussen de html tags staat en gebruik ik om een 'subject' samen te stellen. Die voeg ik aan een lijst en koppel de lijst aan een list control op xaml page.

Als voorbeeld hopelijk duidelijk genoeg al durft ik niet te zeggen of je genoeg af weet van dit soort dingen.
De layout mag je zelf doen zoals je wilt, lijkt me handig om een pivot control te gebruiken zodat je door de dagen heen kunt swipen. Bij startup kun je de pagina laden en op de huidige dag beginnen. :p
(geen checks voor het downloaden of er wel een netwerk connectie is etc)

Als je er niet uit komt, roep maar.

OA3cz4t.png


(als de pagina layout ooit wijzigt kan het zijn dat het niet meer werkt, het nadeel van het scrapen van een pagina die niet van jezelf is :p)
 
Heel erg bedankt. Ik kan m inderdaad in VS 2012 openen.

Onze school zal waarschijnlijk de site niet veranderen. :)
Als ik nog vragen heb dan zal ik die zeker stellen. Maar ik denk dat ik hier wel verder mee kan :)
 
Code:
var wednesday = new List<Subject>();

            for (int i = 1; i < 45; i += 5)
            {
                var sub = GetSubjectFromNode(detailNodes[i].SelectNodes(".//tr//td"));
                if (sub == null)
                {
                    Debug.WriteLine("NULL SUB @ WEDNESDAY {0}e", (i == 0 ? 0 : i / 5) + 1);
                    continue;
                }
                sub.H = ((i == 0 ? 0 : i / 5) + 1).ToString();
                wednesday.Add(sub);
            }

            Dispatcher.BeginInvoke(() =>
            {
                firstWednesday.ItemsSource = wednesday ;
            });


dit heb ik gekopieerd van dinsdag, maar wat moet ik er aan veranderen zodat ik het rooster van woensdag krijg?
 
in de for loop is dit de maandag
Code:
for (int i = 0; i < 45; i += 5)
tabel 5*9 dus had dit dit even snel gemaakt, zal niet echt optimaal zijn maar werkte in snel voorbeeld

Je hoeft alleen de int i = x te wijzigen voor de andere dagen:

MA:
Code:
for (int i = 0; i < 45; i += 5)
DI:
Code:
for (int i = 1; i < 45; i += 5)
WO:
Code:
for (int i = 2; i < 45; i += 5)
DO:
Code:
for (int i = 3; i < 45; i += 5)
VR:
Code:
for (int i = 4; i < 45; i += 5)


Werkt gerust verder en probeer de app te maken. Ik zal misschien vanavond eens kijken of ik het wat beter kan maken, zodat dit allemaal weg is want het is allemaal dubbele code, en niet echt gewenst ;)

Ben benieuwd of het allemaal lukt, succes ;)
 
ik had wel al geprobeerd de i += 0, te veranderen. Maar dat werkte niet :p

Ik heb inmiddels ook al een login scherm toegevoegd waar je je leerlingnummer en klas in kunt voeren
 
Laatst bewerkt:
je kunt met 'DateTime.Today.DayOfWeek' kijken wat voor dag het is en met 'if' of 'switch' statement naar een bepaalde pagina/pivot index te gaan
 
Code:
if (DateTime.Today.DayOfWeek == DayOfWeek.Monday)
            {
                NavigationService.Navigate(new Uri("/Mainpage.xaml?PivotItem.Maandag", UriKind.RelativeOrAbsolute));
            }

Dit werkt niet, wat moet ik hier aan veranderen?
 
Navigate is alleen naar een andere pagina,

als je ma-vr pivot items hebt kun je gewoon de index setten:

Code:
pivot.SelectedIndex = 0;
 
Maar ik navigeer vanaf de login pagina.

Kan ik ervoor zorgen dat bijv het 1ste lesuur een andere kleur krijgt als het tussen 8.40 uur en 9.25 uur is?
Code:
            TimeSpan startles1 = new TimeSpan(08, 40, 0);
            TimeSpan endles1 = new TimeSpan(09, 25, 0);
            TimeSpan now = DateTime.Now.TimeOfDay;

            if (now < endles1)
                if (now > startles1)
                {
                    //dan verander kleur 1ste lesuur
                }
 
je hoeft geen querystring mee te geven, je kunt in de pivot page een on navigated to event overriden en daar de check in zetten

[CPP]protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);

var today = DateTime.Today.DayOfWeek;

if (today == DayOfWeek.Tuesday)
{
pivot.SelectedIndex = 1;
}
else if (today == DayOfWeek.Wednesday)
{
pivot.SelectedIndex = 2;
}
else if (today == DayOfWeek.Thursday)
{
pivot.SelectedIndex = 3;
}
else if (today == DayOfWeek.Friday)
{
pivot.SelectedIndex = 4;
}
}[/CPP]

Kleur aanpassen kan daar in de method erbij.

je kunt if combineren met 'and' (&&) 'or' is (||)

[CPP]if (now >= startles1 && now < endles1)
{

}[/CPP]
 
Maar wat moet er dan tussen bij die kleur veranderen ?

En waar heb je dit eigenlijk allemaal geleerd?
 
Hoe je de kleur wilt wijzigen ligt eraan hoe je de pagina hebt opgebouwd, kun je eens de xaml van een pivot item plakken?

Geleerd door gewoon te proberen en met zoeken op internet. ;)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan