2016-03-27 2 views
0

Поскольку я либо слишком дамп, чтобы найти правильный ответ, либо просто не там ... как hek я заменил «устаревший» WebRequest должным образом «заменой» HttpClient?UWP WebRequest Замена HttpClient Cookie?

В тендере WebRequest i для сериализации & проанализируйте фактический файл cookie, поскольку веб-страница возвращает частичный файл cookie JSON ... однако ... я все еще не нашел способ получить правильный CookieContainer (или любую другую форму cookie) от frking HttpClient ... также ... каждый запрос Google приводит меня к ответам 20000000 лет или устаревшим документам (+ некоторые документы upToDate, которые все просто ссылаются на запросы «GET», без каких-либо cookie-файлов -.- *))

бы kindfull, если кто-то может привести меня к правильному пути ... ТНХ

приветствует X39

Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient(); 
client.DefaultRequestHeaders.UserAgent.TryParseAdd(app.Settings.UserAgent); 
var response = await client.PostAsync(new Uri(app.Settings.Pr0grammUrl.Api + "user/login"), new Windows.Web.Http.HttpStringContent(postDataBuilder.ToString())); 

ответ

1

По умолчанию HttpClient обрабатывает куки себя по умолчанию HttpBaseProtocolFilter. Вы можете получить кук, связанные с URI через GetCookies метод в HttpCookieManager класса:

получает HttpCookieCollection, содержащие экземпляры HttpCookie , которые связаны с определенной URI.

using (var protocolFilter = new HttpBaseProtocolFilter()) { 
    var cookieManager = protocolFilter.CookieManager; 
    var cookies = cookieManager.GetCookies(uri); 
    foreach (var cookie in cookies) { 
     // Here is each cookie 
    } 
} 

Вы также должны быть в состоянии установить/получить куки через HTTP запроса и заголовки ответа. Чтобы запретить HttpClient от обработки печенья самого по себе, создать экземпляр HttpBaseProtocolFilter и установите CookieUsageBehavior в HttpCookieUsageBehavior.NoCookies:

NoCookies: Не трогайте печенье автоматически.

// Create http filter 
httpFilter = new HttpBaseProtocolFilter(); 
httpFilter.CookieUsageBehavior = HttpCookieUsageBehavior.NoCookies; 

// Create http client 
httpClient = new HttpClient(httpFilter); 

// Handle cookies through HTTP headers 
Смежные вопросы