• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    SLUPKA
    SLUPKA --- ---
    NECROMAN: Máš nějakou anotaci? :) Na webu ještě není :)
    LADY_LEIA
    LADY_LEIA --- ---
    NECROMAN: ja uvazuju, ze se stavim v nedeli.
    MICA
    MICA --- ---
    NECROMAN: Taky se jdu v neděli podívat :)
    P19
    P19 --- ---
    NECROMAN: já jdu určitě v neděli a možná i v sobotu.
    NECROMAN
    NECROMAN --- ---
    Uvidim se s nekym na MS festu?
    MS Fest 2013
    http://www.ms-fest.cz/
    Ja budu v nedeli ted v Brne, a v Praze budu mit i jedno povidani o tricich pri vyvoji pro Windows Phone a Windows 8, kdyby byl zajem.
    MILL
    MILL --- ---
    Nemate nekdo odzkousene napojeni na office365 ? Konkretne potrebuju zapisovat do kalendare udalosti a tyto potom zpetne synchronizovat v pripade zmeny v office365 zpet do firemniho webu.
    NECROMAN
    NECROMAN --- ---
    Jeden dev clanek, co jsem dal dohromady:
    Shared localization for Windows Phone 8 and Windows 8 apps using Portable Class Libraries
    Shared localization for Windows Phone 8 and Windows 8 apps using Portable Class Libraries « Martin Suchan – BloQ
    http://suchan.cz/?p=179
    MICA
    MICA --- ---
    PAJIN: Díky moc, díky Fiddleru se mi to povedlo vypátrat. Bylo to způsobeno nově
    přidaným parametrem požadovaným při loginu. Bez něj se sice šlo zalogovat ale jeden z parametrů v cookies byl vygenerován špatně, a proto docházelo k chybám při volání API.
    MICA
    MICA --- ---
    PAJIN: Oh, zkusím tedy fiddler. Mám totiž trochu podezření, že jquery do https requestů přidává ještě nějaké parametry nebo headery, které v http requestech chybí
    PAJIN
    PAJIN --- ---
    MICA: Ja kdyz sem resil neco podobnyho tak nez etheral/wireshark se me osvedcil fiddler, kde je to videt lip. Postupne sem upravoval ten muj request aby mel stejny data jako z prohlizece
    MICA
    MICA --- ---
    MICA: Koukám že jsem nenapostoval komunikaci v obou směrech

    jquery (Firefox)


    WebRequest

    MICA
    MICA --- ---
    JACHYMKO:
    1) Dojde k vyjímce
    WebException - "The remote server returned an error: (502) Bad Gateway."
    a WebExceptionStatus.ProtocolError vrátí json odpověď
    "{\"message\":\"You are not allowed to purchase this listing. The Community Market might be temporarily disabled or your account might be restricted from using the Community Market.\"}"
    (Můj účet ale zablokovaný není, přes js mi to API funguje bez problémů)

    2) ah, bezhlavý copypasting *facepalm*. tojejedno.com je webovka, která o NTLM/Kerberos ani nezavadí
    MICA
    MICA --- ---
    Nemáte náhodou někdo zkušenosti s přistupováním na HTTPS přes WebRequest a zároveň znalost jquery/javascriptu?

    Zabývám se přepisem následující z jquery funkce, která zadává požadavek jistému API, do C# přes WebRequest

    		$J.ajax( {
    			url: 'https://tojejedno.com/neconeco/buylisting/' + listingid,
    			type: 'POST',
    			data: {
    				sessionid: g_sessionID,
    				currency: g_rgWalletInfo['wallet_currency'],
    				subtotal: this.m_nSubtotal,
    				fee: this.m_nFeeAmount,
    				total: this.m_nTotal
    			},
    			crossDomain: true,
    			xhrFields: { withCredentials: true }
    		
    //Zbytek funkce už je nepodstatný
    		} ).done( function ( data ) {
    			BuyItemDialog.OnSuccess( { responseJSON: data } );
    		} ).fail( function( jqxhr ) {
    			// jquery doesn't parse json on fail
    			var data = $J.parseJSON( jqxhr.responseText );
    			BuyItemDialog.OnFailure( { responseJSON: data } );
    		} );
    
    


    Určitou dobu mi to fungovalo s následujícím kódem, jenže provider API nejspíš přidal nějaké zpřísňující
    kritérium a požadavky na API mi teď nefungují. Provider API je vyhodnotí jako chybné.

                        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    
                        request.Method = "POST";
                        request.Timeout = 10000;
    
                        //Headery zachycene pres wireshark
                        request.Host = "tojejedno.com";
                        request.KeepAlive = true;
                        request.Accept = "*/*";
                        request.Headers.Add("Origin", "http://tojejedno.com");
                        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0";
                        request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
                        request.Referer = "http://tojejedno.com/neconeco/";
    
                        request.Headers.Add("Accept-Encoding","gzip,deflate,sdch");
                        request.Headers.Add("Accept-Language", "en-US ,en;q=0.8");
                        
                        //Cookies
                        request.CookieContainer = cookies ?? new CookieContainer();
    
                        //Divociny kolem SSL
                        request.Proxy = null;
                        request.Credentials = CredentialCache.DefaultCredentials;
    
                        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
    
    
                        //Zpracovani dat, ktera budou odeslana POST metodou
                        string dataString = String.Join("&", Array.ConvertAll(data.AllKeys, key =>
                            String.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(data[key]))
                        )
                        );
                        byte[] dataBytes = Encoding.ASCII.GetBytes(dataString);
                        request.ContentLength = dataBytes.Length;
                        Stream requestStream = request.GetRequestStream();
                        requestStream.Write(dataBytes, 0, dataBytes.Length);
                    
                        //Ziskani odezvy
                        HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
    
                        return resp;
    



    Jsem si jistý, že odesílám správná data a že v cookies mám všechny parametry, které API vyžaduje.
    Ale ze dne na den mi výše uvedený kód přestal fungovat. Tak jsem se rozhodl podívat na to co se
    děje na síti i přesto, že je komunikace šifrovaná a přišel jsem na to, že WebRequest přistupuje
    na rozdíl od Firefoxu k tomu HTTPS API jinak a zdá se, že špatně:

    Tohle generuje Firefox


    Tohle generuje můj kód


    Bohužel SSL a síťažina vůbec není moje silná stránka, takže nevím kde hledat zakopaného psa. Neměli byste někdo nějaký tip?
    H_U_N_T_E_R
    H_U_N_T_E_R --- ---
    Spuštěny registrace na MSFest:
    MS Fest 2013
    http://www.ms-fest.cz/
    NECROMAN
    NECROMAN --- ---
    ALCATOR: hmm, dik za odpoved :) Priste budu vice politicky korektni.
    ALCATOR
    ALCATOR --- ---
    NECROMAN: Vyprovokoval jsi je tím svým "... but of course..." (ve stylu "No to dá rozum, že to microsoft zase zprasil..." - pozor na citově zabarvené fráze!), a přitom jsi položil otázku "better?" - Mat Lacey se tě jednou slušně zeptal, co tím myslíš, ale tvoje reakce byla opět víceznačná (chci code-review a současně chci x, y a z).

    Tohle se domnívám, že byl důvod.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Hodil jsem ti tam reopen request.
    NECROMAN
    NECROMAN --- ---
    Nechapu, clovek se na StackOverflow zepta na regulerni otazku, jak to nejlepe implementovat stahovani dat do StorageFile ve Windows Phone 8 a uzivatele mu ji zavrou jako "opinion-based".
    c# - What is the cleanest way for downloading file to Iso storage on Windows Phone 8? - Stack Overflow
    http://stackoverflow.com/...-to-iso-storage-on-windows-phone-8?noredirect=1#comment27889891_18894232
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    JACHYMKO: Je to tak! Vyhravas zlatyho bludistaka! Diky :)
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    JACHYMKO: Vyzkousim, snad to pomuze.
    Nicmene sloupecek mi uz asi nevrati vubec nic :(.
    Kliknutím sem můžete změnit nastavení reklam