2009-06-23 6 views
1

Fondamentalement, j'ai ce code ci-dessous & la dernière étape FinalStepGetReportData() lève une exception sur le retour (HttpWebResponse) request.GetResponse(); si le violoneur est éteint?HTTPS C# Post problème (avec Fiddler)

Tout le reste fonctionne lorsque Fiddler est désactivé sauf cette dernière étape. Quand je tourne Fiddler sur la dernière étape fonctionne?

Des idées? Je me tape la tête contre le mur.

Merci


public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy 
    { 
     public TrustAllCertificatePolicy() { } 
     public bool CheckValidationResult(ServicePoint sp, 
      X509Certificate cert, 
      WebRequest req, 
      int problem) 
     { 
      return true; 
     } 
    } 

     public void Download() 
     { 
      string cookiesInRawFormat = null; 
      NameValueCollection headers = null; 
      HttpWebResponse response = null; 

      request = (HttpWebRequest)HttpWebRequest.Create(Config.ReportUrl); 
      System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 
      request.Accept = "image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; 
      request.KeepAlive = true; 
      request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)"; 

      headers = new NameValueCollection() 
      { 
       { "Accept-Language", "en-us,en;q=0.5" } 
      }; 

      request.Headers.Add(headers); 
      request.CookieContainer = cookies; 
      response = (HttpWebResponse) request.GetResponse(); 
      cookiesInRawFormat = response.Headers["Set-Cookie"]; 
      if (!String.IsNullOrEmpty(cookiesInRawFormat)) 
      { 
       ParseCookiesFromResponseHeader(cookiesInRawFormat); 
      } 
      string location = response.ResponseUri.AbsolutePath; 

      using (response = SignIn(location)) 
      { 
           using (Stream dataStream = FinalStepGetReportData(response, location).GetResponseStream()) 
       { 
        // Open the stream using a StreamReader for easy access. 
        using (StreamReader reader = new StreamReader(dataStream))//, Encoding.UTF8)) 
        { 
         // Read the content. 
         string responseFromServer = reader.ReadToEnd(); 
         // Display the content. 
         Console.WriteLine(responseFromServer); 
        } 
       } 
      } 
     } 

     private HttpWebResponse SignIn(string referrerLocation) 
     { 
      request = (HttpWebRequest)HttpWebRequest.Create(Config.SignInUrl); 
      request.Accept = "image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; 
      request.KeepAlive = true; 
      request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)"; 
      request.ContentType = "application/x-www-form-urlencoded"; 
      request.Referer = referrerLocation; 
      System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 

      NameValueCollection headers = new NameValueCollection() 
      { 
       { "Accept-Language", "en-us,en;q=0.5" }, 
       { "Cache-Control", "no-cache" } 
      }; 

      request.Method = HttpMethod.POST.ToString(); 
      request.Headers.Add(headers); 
      request.CookieContainer = cookies; 
      request.AllowAutoRedirect = false; 

      PostDataBuilder builder = new PostDataBuilder() { 
       { "action", "sign-in" }, 
       { "disableCorpSignUp", String.Empty }, 
       { "email", Config.UserName }, 
       { "metadata1", "Firefox 3.0.10 Windows" }, 
       { "metadata2", "Mozilla Default Plug-in Java(TM) Platform SE 6 U12 QuickTime Plug-in 7.6 Windows Genuine Advantage 19000912007 Microsoft Office system Shockwave Flash 10012iTunes Application Detector Silverlight Plug-In 20401150Windows Presentation Foundation RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit) RealPlayer Version Plugin 601269Java(TM) Platform SE 6 U12 16012||1280-1024-971-32-*-*-*" }, 
       { "metadata3", "timezone: -2 execution time: 3" }, 
       { "metadataf1", String.Empty }, 
       { "mode", "1" }, 
       { "pageAction", "****THE HTML PAGE*****" }, 
       { "password", Config.Password }, 
       { "path", "****THE HTML PAGE*****" }, 
       { "protocol", "https" }, 
       { "query", String.Empty }, 
       { "redirectProtocol", String.Empty }, 
       { "useRedirectOnSuccess", "0" }, 
       { "x", "134" }, 
       { "y", "15" } }; 

      byte[] postDataBytes = builder.Build(Encoding.UTF8); 
      request.ContentLength = postDataBytes.Length; 

      using (Stream stream = request.GetRequestStream()) 
      { 
       stream.Write(postDataBytes, 0, postDataBytes.Length); 
      } 

      return (HttpWebResponse)request.GetResponse(); 
     } 


     private HttpWebResponse FinalStepGetReportData(HttpWebResponse response, string referer) 
     { 
      request = (HttpWebRequest)HttpWebRequest.Create(response.Headers["Location"]); 
      request.Accept = "image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/vnd.ms-xpsdocument, application/xaml+xml, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; 
      request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)"; 
      request.ContentType = "text/xml; encoding='utf-8'"; 
      request.Method = HttpMethod.GET.ToString(); 
      request.Referer = referer; 
      request.KeepAlive = true; 
      request.ProtocolVersion = HttpVersion.Version10; 
      request.Headers.Add(HttpRequestHeader.Cookie, response.GetResponseHeader("Set-Cookie")); 
      System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 

      NameValueCollection headers = new NameValueCollection() 
      { 
       {"Accept-Language", "en-us,en;q=0.5" }, 
       {"Cache-Control", "no-cache" }, 
       {"Accept-Encoding", "deflate"}, 
      }; 

      request.Headers.Add(headers); 
      return (HttpWebResponse)request.GetResponse(); 
     } 
+0

Avez-vous configuré un Fiddler pour décrypter le trafic HTTPS? –

+0

Testez-vous également localhost avec un certificat auto-signé? – David

+0

Eh bien maintenant j'ai complètement désinstallé fiddler puisque je ne pouvais pas comprendre le problème –

Répondre

-1

trouvé un article intéressant sur le site haacked où il a rencontré des problèmes affichant des données de formulaire via HTTP 1.1. La peine d'essayer ...

http://haacked.com/archive/2004/05/15/http-web-request-expect-100-continue.aspx

//try this or the other solutions given in the comments 
request.ServicePoint.Expect100Continue = false; 
+0

salut merci pour cela - ne semble pas résoudre le problème que je vais obtenir la même exception? –

+0

J'ai trouvé un article sur le site phil haacks, peut-être que ça vaut la peine d'essayer. – David

+0

merci dave va essayer - c'est juste me rendre fou! –

1

Quelle est l'exception exacte que vous obtenez? Un problème commun ici est d'oublier d'appeler. Fermez la réponse lorsque vous avez fini de le lire. Fiddler fermait les connexions client par défaut, ce qui résolvait certains problèmes avec les clients qui ne fermaient pas correctement les flux de réponse eux-mêmes.

+0

J'ai eu le même problème que j'ai finalement craqué quand j'ai réalisé que le violoniste était en train de le réparer. C'était exactement ce que tu dis. – tempy

0

J'ai exactement le même problème et c'est parce que j'ai laissé une réponse sans la fermer comme vous l'avez mentionné.