Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Stvaranje WebRequesta bez dekodiranja url-a

[es] :: .NET :: Stvaranje WebRequesta bez dekodiranja url-a

[ Pregleda: 1794 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zolakt
Kutina [Hr]

Član broj: 118464
Poruke: 69
*.zg.metro.carnet.hr.



Profil

icon Stvaranje WebRequesta bez dekodiranja url-a19.05.2010. u 18:08 - pre 169 meseci
Znam da ovo pitanje bas i ne spada u ovaj forum, ali ne znam gdje bi drugdje pitao.
Radim klijent za rad s Google translateom u .NETu (C#).

Imam problem oko encodinga.
npr. tekst "što ovo znači" bi trebao poslati googleovom serveru u ovom formatu
%C5%A1to%20ovo%20zna%C4%8Di

Koji je ovo uopce encoding?
Pretpostavljam da su to neke hex vrijednosti.
I jos bitnije kako da normalni utf8 string pretvorim u ovaj format u C#?

Evo jos malo detalja,
skuzio sam kad se ovo dekodira da se dobije string "što ovo znači"

[Ovu poruku je menjao zolakt dana 19.05.2010. u 20:49 GMT+1]
 
Odgovor na temu

zolakt
Kutina [Hr]

Član broj: 118464
Poruke: 69
*.zg.metro.carnet.hr.



Profil

icon Re: Pretvorba znakova - encoding19.05.2010. u 19:48 - pre 169 meseci
Skuzio sam u cemu je problem.
Nije stvar encodinga, odnosno je, ali je problem u .NETu

Tekst (utf8) se moze encodirati sa System.Web.HttpUtility.UrlEncode(string)
I dobije se dobar format.

Problem je u stvaranju WebRequesta.
Request stvaram sa (HttpWebRequest)WebRequest.Create(string).
Taj string se pretvara u Uri objekt.

Problem je sto Uri objekt automatski ponovno dekodira tekst, i takav dekodirani tekst salje serveru.
Googleov server ocito ocekuje iskljucivo encodirani ulaz, tako da ne dobijem dobar rezultat.

Da li je moguce stvoriti Uri sa absolutnom putanjom, odnosno onesposobiti automatsko dekodiranje teksta kad se stvoti Uri?

Btw. promijenio sam ime teme, jer nije problem u encodingu vec u nacinu kako .NET stvara objekte
 
Odgovor na temu

zolakt
Kutina [Hr]

Član broj: 118464
Poruke: 69
*.zg.metro.carnet.hr.



Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 12:02 - pre 169 meseci
Uspio sam rijesiti, malo na cudan nacin, ali radi.

Pa evo ako nekoga zanima:
Potrebno je "lagati" serveru koji user-agent je u pitanju.
Ako postavim :
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2";
onda sve radi.

Ocito se od browsera ocekuje enkodirani ulaz, tako da se salje takav request, a ne "orginalni dekodirani".
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 12:26 - pre 169 meseci
Ovo mi zvuci potpuno nemoguce. Ako je istina onda je to mutljavina u google translatoru, user agent je samo jedan od hedera koji ne bi smeo uopste da utice na bilo sta sem na format HTMLa da se prevazidju cross-browser razlike.

Daj parce koda kojim pozivas google translate.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

zolakt
Kutina [Hr]

Član broj: 118464
Poruke: 69
*.zg.metro.carnet.hr.



Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 12:54 - pre 169 meseci
Nije nemoguce.
Nema smisla, to se slazem.
Ali dodavanjem user-agenta je proradilo.

Evo ti i kod:
Code (csharp):
string queryUrl = "http://translate.google.com/translate_tts?q="+inText+"&tl="+sourceLangValue;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(queryUrl);
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();


Naravno da je mutljavina u googleu.
Po meni bi server trebao primati bilo kakav ulaz, pa ga kasnije formatirati po volji.
Dok googleov server ocekuje iskljucivo enkodirani ulaz.
Mislim prima on i normalni, ali krivo shvaća non-ascii znakove.
I iz browsera kad ukucas normalne znakove, vrati krivi rezultat.
Btw. ovo je server za TTS (izgovor), ne sami prijevod.

Imao sam slican problem i sa jednim drugim serverom.
Doduse kod njega se salje POST, pa su podaci uvijek ok.
Ali nije uopce vracao rezultat, dok nisam dodao user-agent header.

Mozda je stvar .NETa. Mozda on postavi vlastiti user-agent koji neki serveri ne shvacaju.
Iako u potpunosti se slazem da je ovo glupost.
User-agent je obican header koji ne bi trebao imati utjecaja na ista, ali...

[Ovu poruku je menjao mmix dana 20.05.2010. u 14:29 GMT+1]
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 13:53 - pre 169 meseci
Ja iskreno ne vidim problem, meni ovo radi sasvim ok. request lepo kodira URL. Ako udjes u request objeckat posle kreiranja i pogledas request.RequestUri.AbsolutePath videces da ima sadrzaj "http://translate.google.com/tr...o%20ovo%20zna%C4%8Di&tl=cr" kako i treba. Kad ja posaljem od mene taj URL iz .NETa dobijam audio fajl sto je pretpostavljam ono sto ezlis da dobijes iz TTS sistema.

Code (csharp):
            string inText = "što ovo znači";
            string sourceLangValue = "cr";
            string queryUrl = "http://translate.google.com/translate_tts?q=" + inText + "&tl=" + sourceLangValue;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(queryUrl);
            //request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

zolakt
Kutina [Hr]

Član broj: 118464
Poruke: 69
*.zg.metro.carnet.hr.



Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 14:18 - pre 169 meseci
Sve to stoji.
Ali poslusaj taj audio file.
Š i Č krivo izgovara

Dok ne stavis user-agent. Onda vrati dobar izgovor.
Btw. sourceLangValue = "hr", ne "cr"
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 15:16 - pre 169 meseci
Pazi stvarno, kakava glupost. Sa "Mozilla/5.0" sam ga cak blokirao (zakuca se google servis), tek sa "Mozilla/5.0 (Windows)" je vratio ispravan mp3. Zar je Windows mp3 fajldrugacijeg formata od Linux ili Mac mp3? U svakom slucaju ovo ti nema veze sa .NETom, ovo je cisto googletova brljotina. Probaj da ih obavestis.

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

zolakt
Kutina [Hr]

Član broj: 118464
Poruke: 69
*.zg.metro.carnet.hr.



Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 15:46 - pre 169 meseci
Ma nije razlicit mp3.
Imam i klijent za linux koji prima taj fajl i normalno ga pusti.
Zapravno je ovo moje server, koji zove ostale server.
I onda jos linux klijent za taj moj server.

Mozda cak nije ni stvar u googleu, vec vrsti servera.
Kazem slican problem sam imao s jos jednim serverom.
Tamo ne vraca nista, blokiran je, sve dok se ne postavi user-agent.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 16:09 - pre 169 meseci
To su uradili tako da kasnije mogu samo da ukljuce filter i otkace sve koji nisu na chrome-u :P
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Stvaranje WebRequesta bez dekodiranja url-a20.05.2010. u 19:09 - pre 169 meseci
Ma vraca razlicit mp3 sa tvojim user agentom i bez njega (za neke user agente i blokira) sa tim sto je taj mp3 od 5.3kb povrh svega neispravan (dok je tvoj ispravni onaj od 3.7kb), sto je meni prva indikacija da server side kod ima bagovit (i iskreno nadasve nepotreban) branching u odnosu na user agent string. Sve i da agent igra ulogu u opdgovru svaka dobro napisana veb aplikacija mora da ima neki default mehanizam u slucaju novih/nepoznatih agenata. Ovo je klasican primer sampionskog programiranja i pretpostavki o tome ko ce i kako da pozove URL, samo sam se iznenadio da to vidim u kodu koji emituje google, nista vise. Al ne znam ni sto sam se iznenadio, u firmi te veilcine mora postoja podobar broj sampiona.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: Stvaranje WebRequesta bez dekodiranja url-a

[ Pregleda: 1794 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.