• ú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
    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 :(.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    Nainstaloval jsem si (neprozretelne!) Reflector i s tim add-inem do Visual Studia. Bohuzel jako vedlejsi efekt mi zmizel sloupecek "user-unhandled" v Exception dialogu. To by samo o sobe tak moc nevadilo, ale zresetovalo se v tom i nejaky nastaveni a tedka je debugging temer nemoznej, protoze mi to hlasi hromadu ruznejch pochytanejch vyjimek zevnitr .netu.

    Nevite jak to dostat zpatky do puvodniho stavu? Uninstall toho reflectoru nepomaha :(.
    NECROMAN
    NECROMAN --- ---
    Podporte prosim tento muj ticket na Visual Studio uservoice, diky :)
    Make WinRT API usable in Portable Class Libraries targeting Windows 8 and WP8 – Customer Feedback for Microsoft
    http://visualstudio.uservoice.com/...ions/4443287-make-winrt-api-usable-in-portable-class-libraries-
    GOSHEWAN
    GOSHEWAN --- ---
    JACHYMKO: Problem je v tom, ze volani te DLL bezi v Task.Factory.StartNew(...). Kdyz to pustim normalne tak odchytavani funguje komplet... Tusis co s tim?

    Zacina se rysovat moznost zmeny te DLL (ze by komplet report vracela z volani metody), ale zatim na to nemuzu spolehat.
    NECROMAN
    NECROMAN --- ---
    Microsoft vcera uvolnil Windows 8.1 RTM na MSDN/TechNetu a Visual Studio 2013 RC ke stazeni:
    Download Windows 8.1 RTM, Visual Studio 2013 RC and Windows Server 2012 R2 RTM Today - Steve "Guggs" Guggenheimer's blog - Site Home - MSDN Blogs
    http://blogs.msdn.com/...ows-8-1-rtm-visual-studio-2013-rc-and-windows-server-2012-r2-rtm-today.aspx
    Announcing the Visual Studio 2013 Release Candidate - Somasegar's blog - Site Home - MSDN Blogs
    http://blogs.msdn.com/...archive/2013/09/09/announcing-the-visual-studio-2013-release-candidate.aspx
    GOSHEWAN
    GOSHEWAN --- ---
    TENCOKACISTROMY: Tak presne tohle mam udelane a nejede to. Muze byt problem ve vlaknech?
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    GOSHEWAN: Takhle se na trace pripojuju ja a jede mi to v pohode.
    GOSHEWAN
    GOSHEWAN --- ---
    TENCOKACISTROMY: Fungovalo by tohle? I.e. zachytit to listenerem, presmerovat na Console.Out a to pak presmerovat uplne jinam...
    var listener = new TextWriterTraceListener(Console.Out);

    Trace.Listeners.Add(listener);
    Debug.Listeners.Add(listener);
    var serverOut = new NamedPipeServerStream("pipeOut", PipeDirection.InOut, 10, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
    SetStdHandle(StdOutHandle, serverOut.SafePipeHandle.DangerousGetHandle());
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    GOSHEWAN: Neni to pres trace? TraceListener
    GOSHEWAN
    GOSHEWAN --- ---
    Opet resim redirect vystupu z unmanaged DLL. Jedna se o Matlab Compiler DLL (matlab kod obaleny v Ccku).

    Mam presmerovany STDOUT a STDERR, ovsem ta mrcha stale neco vypisuje do immediate window... Jak to muzu odchytit?
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    NECROMAN: Lepsi to mas takhle:
    DeleteBookmarks(IEnumerable<Bookmark> items);
    DeleteBookmarks(params Bookmark[] items);
    
    Kliknutím sem můžete změnit nastavení reklam