Ich habe den folgenden Code, der erfolgreich funktioniert. Ich kann nicht herausfinden, wie ich den Cookie aus der Antwort herausholen kann. Mein Ziel ist es, dass ich in der Lage sein möchte, Cookies in der Anfrage zu setzen und Cookies aus der Antwort zu erhalten. Gedanken?
private async Task<string> Login(string username, string password)
{
try
{
string url = "http://app.agelessemail.com/account/login/";
Uri address = new Uri(url);
var postData = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("username", username),
new KeyValuePair<string, string>("password ", password)
};
HttpContent content = new FormUrlEncodedContent(postData);
var cookieJar = new CookieContainer();
var handler = new HttpClientHandler
{
CookieContainer = cookieJar,
UseCookies = true,
UseDefaultCredentials = false
};
var client = new HttpClient(handler)
{
BaseAddress = address
};
HttpResponseMessage response = await client.PostAsync(url,content);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync();
return body;
}
catch (Exception e)
{
return e.ToString();
}
}
Hier ist die vollständige Antwort:
HttpResponseMessage response = await client.PostAsync(url,content);
response.EnsureSuccessStatusCode();
Uri uri = new Uri(UrlBase);
var responseCookies = cookieJar.GetCookies(uri);
foreach (Cookie cookie in responseCookies)
{
string cookieName = cookie.Name;
string cookieValue = cookie.Value;
}
c#
async-await
dotnet-httpclient
Peter Kellner
quelle
quelle
Antworten:
Um einer Anfrage Cookies hinzuzufügen, füllen Sie den Cookie-Container vor der Anfrage mit
CookieContainer.Add(uri, cookie)
. Nachdem die Anfrage gestellt wurde, wird der Cookie-Container automatisch mit allen Cookies aus der Antwort gefüllt. Sie können dann GetCookies () aufrufen, um sie abzurufen.quelle
httpclient
sie aus der httpclient-Factory erstellt wurden? dh Builder-Methode zu services.AddHttpClient hinzugefügtEs gibt eine Alternative, wenn Sie keinen Zugriff auf die haben
HttpClient
und die nicht injizieren könnenCookieContainer
. Dies funktioniert in .NET Core 2.2:quelle
Mit der angegebenen URL können Sie problemlos einen Cookie-Wert abrufen.
quelle