Norbert Pisz
Norbert Pisz

Reputation: 3440

HttpClient one response from different countries

I have a simple aplication in Windows Store. This application download and parse HTML from website. I using a HttpClient class

Now I have a big problem becouse a page looks diffrent form specific countries and my parsing is not success.

Example: When someone from USA using my app then app downloading diffrent HTML content becouse webpage looks diffrent in specific countries.

How to set a default location in http client? I want to have a the same HTML in all executes.

EDIT I calling this page: LINK

Upvotes: 1

Views: 1145

Answers (5)

Magnus Johansson
Magnus Johansson

Reputation: 28325

Setting the design flaw consideration aside for a moment (you may have or have not good reason to do screen scraping), here's how to set the Accept-Language header:

var httpClient = new HttpClient();
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, new Uri("http://www.livescore.com"));
httpRequestMessage.Headers.Add("Accept-Language", "en");
var response = await httpClient.SendAsync(httpRequestMessage);
string content = await response.Content.ReadAsStringAsync();

Upvotes: 0

ZombieSheep
ZombieSheep

Reputation: 29953

ignoring the initial question for a moment

PLEASE don't write an app that depends on any kind of HTML parsing for any functionality. All the site you are calling has to do is change an ID or two in the "wrong" place and your app will fail for every user until you put out an update.

back to the answer

OK, assuming that screen-scraping is the way you want to go with your app, and assuming, of course, that the site you are scraping from allows such behaviour in their terms of use (check - it wouldn't be fun for you to get sued if you didn't read them) then I'd suggest a slightly different approach.

Since you are not guaranteed to get the same page layout for any locale your users access your app from, why not set up a web service that does the parsing work for you, and interrogate that service from your app instead of going direct to the site?

Your app <--> Your web service <--> the site providing data

That way, you always know that the data you are getting back is consistently formatted as if for a specific locale (your web server), and then you only have to maintain one piece of code to parse it. That will be much simpler whenever there is a change to the underlying data structure (and believe me, there will be changes)

Upvotes: 2

tomfanning
tomfanning

Reputation: 9660

The answer to this depends on how the website implements default language selection. Both of the other answers are potentially correct depending on how the specific site works.

If you can share the site URL, we can tell you a suitable strategy to use.

Upvotes: 0

lucuma
lucuma

Reputation: 18339

You need to set the default language header when you make the request and/or consider making it a user definable setting.

http://www.w3.org/TR/WCAG20-TECHS/SVR5

Upvotes: 2

dutzu
dutzu

Reputation: 3910

Try to always call the url in question with the cultureInfo path param if it has one, for example say that you are targeting microsoft.com then you would have something like this:

and so on. If this is applicable to you, this would be an ideea.

Upvotes: -1

Related Questions