HttpWebRequest Coockies auslesen HttpWebRequest Coockies auslesen
Danke Danke:  0
Ergebnis 1 bis 9 von 9
  1. 15.10.2014, 17:42
    #1
    Hi leute,

    ich versuche wie das thema schon sagt cookies bei einem web request auszulesen. Leider gelingt mir das bisher nicht.

    Code:
    try
                {
                    HttpWebRequest webRequest = (HttpWebRequest)result.AsyncState;
                    //webRequest.CookieContainer.Count == 2
    
                    using (HttpWebResponse response = (HttpWebResponse)webRequest.EndGetResponse(result))
                    {
                        //response.Cookies.Count == 0
    
                        using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
                        {
                            Response = streamReader.ReadToEnd();
                            streamReader.Close();
                            response.Close();
                        }
                    }
    
                    if (this.GetResponse != null)
                        this.GetResponse(this, new EventArgs());
                }
                catch (Exception ex)
                {
                    
                }
    Die Coockies stehen nur im webRequest zur verfügung, beim response ist Coockies leer. Warum ist das so? Und wie kann ich die Coockies direckt aus dem webRequest auslesen? Über die .GetCoockie() methode muss man eine Uri angeben ... aber kann man nicht einfach alle auslesen?
    0
     

  2. 16.10.2014, 20:42
    #2
    Niemand nen Ansatz?
    0
     

  3. 17.10.2014, 09:35
    #3
    Was passiert wenn du es so wie in der Antwort hier machst: http://stackoverflow.com/questions/5...ttpwebresponse

    Also einen eigenen Cookie-Container anlegst und an den Request übergibst bevor du in absendest?
    0
     

  4. 17.10.2014, 10:39
    #4
    Das mach ich bereits. Wenn ich das nicht machen würde, wäre webRequest.CookieContainer == null
    0
     

  5. 17.10.2014, 19:07
    #5
    hier mal der ganze request ... vieleicht kann man ja da was erkennen

    Code:
    public void SubmitAction(string url)
            {
                try
                {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.Method = "POST";
                    request.CookieContainer = new CookieContainer();
                    //request.AllowAutoRedirect = false;
                    request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
                }
                catch (Exception e)
                { }
            }
    
            private void GetRequestStreamCallback(IAsyncResult asyncResult)
            {
                string json = RequestData.Stringify();
    
                HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
                try
                {
                    using (Stream postStream = request.EndGetRequestStream(asyncResult))
                    {
                        StringBuilder postData = new StringBuilder();
                        postData.Append("app=" + json);
                        postData.Append("&crc=" + CreateChecksum(json));
    
                        byte[] postDataByteArray = Encoding.UTF8.GetBytes(postData.ToString());
    
                        postStream.Write(postDataByteArray, 0, postData.Length);
                        postStream.Close();
                    }
                    request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
                }
                catch (Exception ex)
                {
                }
            }
    
            private void GetResponseCallback(IAsyncResult result)
            {
                try
                {
                    HttpWebRequest webRequest = (HttpWebRequest)result.AsyncState;
                    //webRequest.CookieContainer.Count == 2
    
                    using (HttpWebResponse response = (HttpWebResponse)webRequest.EndGetResponse(result))
                    {
                        //response.Cookies == 0
    
                        using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
                        {
                            Response = streamReader.ReadToEnd();
                            streamReader.Close();
                            response.Close();
                        }
                    }
    
                    if (this.GetResponse != null)
                        this.GetResponse(this, new EventArgs());
                }
                catch (Exception ex)
                {
                    
                }
            }
    0
     

  6. 15.11.2014, 12:08
    #6
    HttpWebRequest ist uralt. Und dein Code voller boilerplate.

    Benutze doch eine moderne Klasse für solche Request.
    http://msdn.microsoft.com/de-de/libr...v=vs.118).aspx (Gibt es über Nuget für WP8)
    Hier ist ein Beispiel wie man an die Cookies kommt http://stackoverflow.com/a/13318204 (nicht so schön, da .Result statt await verwendet wird, aber egal)
    0
     

  7. 16.11.2014, 19:55
    #7
    Ich wusste nich das die Uralt ist ... das steht ja auch nirgends ^^
    Aber danke weiss ich bescheid

    nur leider will das auch nich so ganz klappen :/

    Code:
    CookieContainer cookies = new CookieContainer();
                HttpClientHandler handler = new HttpClientHandler();
                handler.CookieContainer = cookies;
                //handler.AllowAutoRedirect = false;
    
                HttpClient httpClient = new HttpClient(handler)
                {
                    BaseAddress = mainUri,
                    Timeout = TimeSpan.FromSeconds(5)
                };
    
                try
                {
                    HttpResponseMessage response = await httpClient.PostAsync(subUrl, content);
    
                    using (HttpContent responseContent = response.Content)
                    {
                        string result = await responseContent.ReadAsStringAsync();
    
                        if (!String.IsNullOrEmpty(result))
                        {
                            Response = result;
    
                            IEnumerable<Cookie> responseCookies = cookies.GetCookies(new Uri("...")).Cast<Cookie>();
                            foreach (Cookie cookie in responseCookies)
                            {
    
                            }
                        }
                    }
                }
    responseCookies bleibt auch hier Leer ... cookies jedoch hat seiner 2 Cookies
    0
     

  8. 16.11.2014, 21:15
    #8
    Zitat Zitat von Coooder Beitrag anzeigen
    cookies jedoch hat seiner 2 Cookies
    Meinst du damit, das cookies.Count 2 liefert?

    Vielleicht mainUri + subUrl != new Uri("...") ?
    Am besten du baust dir die Uri einmal selber, lässt BaseAddress weg, übergibst die volle Uri im Post() und auch in GetCookies().
    0
     

  9. 16.11.2014, 21:41
    #9
    Ja genau cookies.Count == 2

    Jo die sind gleich, habs aber dennoch mal deine variante ausprobiert ... leider das gleiche resultat
    0
     

Ähnliche Themen

  1. Excel-Datei auslesen
    Von A-n-d-y im Forum Programmieren
    Antworten: 2
    Letzter Beitrag: 05.09.2008, 15:24
  2. Ordnerinhalt auslesen/Fehlermeldung
    Von fsg4u im Forum Programmieren
    Antworten: 1
    Letzter Beitrag: 04.08.2008, 11:00
  3. PocketPC / WinCE - Auslesen des netzwerk Status
    Von Azubi im Forum Programmieren
    Antworten: 1
    Letzter Beitrag: 03.07.2006, 11:52
  4. Zeit auslesen
    Von marc_ch im Forum Programmieren
    Antworten: 10
    Letzter Beitrag: 01.10.2003, 10:21