Tento web používá soubory cookie. Dalším používáním webu s tímto souhlasíte.
jméno
heslo
přihlásit
zaregistrujte se
zapomněli jste heslo?
Programovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
TENCOKACISTROMY
Máte k tomu co říct? Vložte se do diskuze.
NECROMAN --- 0:04:49 27.9.2013
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 --- 19:49:55 25.9.2013
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 --- 18:33:53 25.9.2013
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 --- 18:25:08 25.9.2013
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 --- 17:16:12 25.9.2013
MICA: Koukám že jsem nenapostoval komunikaci v obou směrech

jquery (Firefox)
[http://puu.sh/4zU47.png]

WebRequest
[http://puu.sh/4zU11.png]
MICA --- 16:45:00 25.9.2013
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 --- 16:14:21 25.9.2013
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
[http://puu.sh/4zRQa.png]

Tohle generuje můj kód
[http://puu.sh/4zRPy.png]

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 --- 8:28:38 25.9.2013
Spuštěny registrace na MSFest:
MS Fest 2013
http://www.ms-fest.cz/
NECROMAN --- 15:29:52 23.9.2013
ALCATOR: hmm, dik za odpoved :) Priste budu vice politicky korektni.
ALCATOR --- 23:35:05 22.9.2013
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.