C# tekst van een website krijgen

Status
Niet open voor verdere reacties.
WebUtility in plaats van HttpUtility

of mogelijk, zelf nog niets mee gedaan maar lees het
var output = Windows.ApplicationModel.DataTransfer.HtmlFormatHelper.CreateHtmlFormat(input);

Deze info staat ook in het documentje wat ik je had gedeeld.
zswnir.png
 
Laatst bewerkt:
Ik heb hubs nog niet gebruikt op wp, maar ik neem aan dat je dan een listview direct in de hubsection plaatst?
Je moet dan eerst een datatemplate element gebruiken:

Code:
<HubSection>
    <DataTemplate>
        <ListView />
    </DataTemplate>
</HubSection>
 
Ja dat weet ik maar als ik dan vervolgens dit doe

[CPP]

competition.ItemsSource = stand;

[/CPP]

dan herkent ie de competition niet , omdat die in een datatemplate staat

hoe los je dat op?
 
Dit zal wel werken: (een lege binding zoals bij de itemssource zal binden aan de datacontext van het 'parent' element)

Code:
<HubSection Name="CompetitionSection">
    <DataTemplate>
        <ListView ItemsSource="{Binding}" />
    </DataTemplate>
</HubSection>


Code:
CompetitionSection.DataContext = stand;
 
Je moet je methods eens debuggen om te kijken wat er dan gebeurt.
Je lijst is leeg omdat je alleen de nodes parsed die geen attributes hebben. Minder copy paste bij methods met zo'n checks ;)

Dus als je het if (standNode.HasAttributes) weglaat zul je wel wat dingen in de lijst hebben staan. (in een andere method was dit ooit gebruikt omdat de regel met de tableheaders attributes had en de data niet)

Als je zo'n checks hebt zonder 'else' statement, kun je best een else toevoegen en daarin gewoon een debug regel plaatsen zodat je het in de debugger leest dat er een 'else' is geweest zoals de 'Debug.WriteLine("skipped:{0}", teamName);' dan weet je precies wat er is overgeslagen.



En ook heb je een paar regels verder nog een copy/paste bugje:
Code:
var gelijkNode = SelectNode(standNode, "td", "class", "gelijk");
var gelijk = SelectContent(gelijkNode);

var verlorenNode = SelectNode(standNode, "td", "class", "verloren");
var verloren = SelectContent(gelijkNode);

hier zet je 'verloren' gelijk aan 'gelijk'



Het lijkt vaak sneller te gaan met copy/paste maar soms ben je er daardoor juist een stuk langer mee bezig ;)
 
Hoe zorg ik dat ik de Parameter ook ergens anders kan gebruiken?
Ik had dit wel al geprobeerd maar dat werkte niet:

[CPP]

private async void Volledig_Click(object sender, RoutedEventArgs e, NavigationEventArgs a)
{
var url = a.Parameter.ToString();
var downloader = new Downloader();

var competitieurl = await downloader.GetCompetitionUrlAsync(url);

var AlleProgrammaUrl = await downloader.GetVolledigProgrammaUrlAsync(competitieurl);

var volledigProgramma = await downloader.DownloadVolledigProgrammaAsync(AlleProgrammaUrl);
ProgrammaTeam.DataContext = volledigProgramma;
}

[/CPP]
 
Je kunt niet zomaar de parameters van een event aanpassen, wel je eigen methods.

Wat je kunt doen is een private variable maken in de class/page waar je in werkt. (zo ongeveer als je met baseUrl doet in parser classes)

Je maakt een private object _navigationParameter in de class, en in je load/onnavigatedto event zet je deze gelijk aan de inkomende parameter. Dan kun je overal de _navigationParameter gebruiken.
 
Bind een eigen class aan de hubsection waar 2 lists in staan.
Kijk in het rooster app voorbeeld, ik bind viewmodels aan de pagina's en daar stop ik alle code in. (MainPageViewModel <-> MainPage)
 
Ik heb er naar gekeken maar ik snap nog niet precies hoe dat allemaal werkt dus ik denk dat ik het dan maar 1 listview doe in die hubsection
 
een class met je lijst<type> of wat je ook wilt gebruiken:

Code:
class MyLists
{
	public List<string> List1 { get;set; }
	public List<string> List2 { get;set; }
}

in code:

Code:
var lists = new MyLists();

lists.List1 = competitionlist;
lists.List2 = eenanderelist;

de datacontext op hubsection is dan 'lists'
en binding is dan {Binding List1}


Ik denk dat in het voorbeeld dit het geval is met de klassen/leerlingen.
 
Hoe komt het dat ie bij de windows 8 applicatie eigenlijk de data niet kan downloaden?
 
wat kun je niet downloaden? krijg je een foutmelding? welke code roep je aan?


Als je bezig bent je app 'universal' te maken kun je misschien het beste een projectje 'on the side' maken om wat kleine dingen te testen af en toe want het kan wel :P
 
Ik probeer het nieuws te downloaden, dat kun je nog zien in het bestandje dat ik eerder heb gestuurd. Maar het is misschien ook wel verstandig dat ik eerst wat meer over Windows 8.1 ga lezen en bekijken
 
Hmm het ligt niet aan jou :P Ik heb geen probleem met sites waar ik data van pluk maar die ZSV site geeft alleen een error terug.
Met de Windows.Web.Http.HttpClient die ik gebruik werkt het niet, met de oude System.Net.Http.HttpClient werkt het op WP. Dat is hetzelfde als een aantal posts terug.

Ik probeer nog eens wat te kijken waarom het met de http://www.wakanutgeve.nl/ niet werkt ;\

Met de FontWeight property kun je text dikte aanpassen.
 
Nou... dat duurde even...

Ik heb deze test methode gebruikt en met het setten van de useragent werkte het met de nieuwe Windows.Web API op wp8.1 & w8.1. Uiteraard het laatste wat ik probeerde :<

Code:
using System;
using Windows.UI.Popups;
using Windows.Web.Http;
using Windows.Web.Http.Filters;

[CPP]public class MainPageViewModel
{
public async void DownloadSource()
{
var uri = new Uri("http://www.wakanutgeve.nl/1/welkom/archief/?from=0&d=0&m=5&y=2014");
//uri = new Uri("http://www.helpmij.nl/");

string resultMessage;
try
{
using (var filter = new HttpBaseProtocolFilter())
using (var client = new HttpClient(filter))
{
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101");

var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var source = await response.Content.ReadAsStringAsync();
resultMessage = string.Format("Source downloaded! \r\n{0}...", source.Substring(0, 200));
}
else
{
resultMessage = string.Format("The request was not successful: {0}", response.StatusCode);
}
}
}
catch (Exception ex)
{
resultMessage = ex.Message;
}

new MessageDialog(resultMessage, "Operation Completed").ShowAsync();
}
}

[/CPP]


of simpel met debug line (gaat maar om het testen dat de source wordt gedownload)
[CPP]public async void DownloadSourceSimple()
{
var uri = new Uri("http://www.wakanutgeve.nl/1/welkom/archief/?from=0&d=0&m=5&y=2014");

using (var filter = new HttpBaseProtocolFilter())
using (var client = new HttpClient(filter))
{
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101");
var source = await client.GetStringAsync(uri);

Debug.WriteLine("Source downloaded!");
Debug.WriteLine(source.Substring(0, 200));
}
}[/CPP]


De 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101' komt van dev tools in je browser als je kijkt naar de request header stuff.

(url in voorbeeld is nieuws van maand mei)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan