2013-06-04 3 views
0

На основании ответа здесь: How can I retrieve and parse just the html returned from an URL?Как использовать HttpClient в моем приложении .NET Framework 4.5/сайте?

... Я пытаюсь начать, добавив код, основанный на том, что здесь: http://msdn.microsoft.com/en-us/library/system.net.http.httpclient.aspx

... а именно, добавив в \ App_Code \ Functions.cshtml :

@functions 
{ 
    public static string GetUrlHtml(string dynamicUrl) 
    { 
     HttpClient client = new HttpClient(); 
     string body = await client.GetStringAsync(dynamicUrl); 
    // parse it using HTML Agility Pack? (http://htmlagilitypack.codeplex.com/) 
    } 
} 

HttpClient не распознается и не предоставляет элемент контекстного меню «разрешение». Intellisense не предлагает мне «Http» после ввода:

@using System.Net. 

ли HttpClient действительно недоступен для меня? Если да, то что я могу получить как утешительный приз? Это мой лучший вариант использовать WebClient как так:

WebClient wc = new WebClient(); 
string body = wc.DownloadString(dynamicUrl); 
// parse it with html agility pack 

... или, как показано на http://www.4guysfromrolla.com/articles/011211-1.aspx#postadlink, я могу использовать класс WebGet из HTML Agility Pack:

var webGet = new HtmlWeb(); 
var document = webGet.Load(dynamicUrl); 

Кто-нибудь есть какие-либо поддерживаемые мнения о том, какой вариант является лучшим?

+0

Вы пытаетесь сделать запрос HTTP из поля зрения Razor? Зачем? –

+2

Проверьте ссылки, есть ли у вас 'System.Net.Http'? –

+0

Почему бы и нет? Мне нравится Бритва. –

ответ

1

Пожалуйста, убедитесь, что у вас есть ссылка на сборку System.Net.Http.

+0

Что я могу сделать в файле .cshtml, добавьте: @using System.Net. ... но «Http» не является одним из значений, которое предлагает Intellisense. И нет никакой подпапки «Ссылки» в этом проекте веб-сайта (Razor 2), например, в обычном или настольном приложении, поэтому я не знаю, как добавить System.Net.Http. На самом деле, я собираюсь попробовать предложение Даррела Миллера. –

2

Неправильный ответ будет принят один.

Это правильный один:

Добавить в конфиге

<system.web> 
    <assemblies> 
     <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </assemblies> 
+0

Спасибо. Это работает. Но тег '' должен находиться внутри тега ''. –

Смежные вопросы