» »

HTTP POST

HTTP POST

Microsoft ::

Skratka, hocem naredit ta http post, programsko, pa mi ne rata. Iz neta sem pobral n+1 primerov, a mi nobeden ne dela. Pa me zanima, ce je kdo pripravljen napisat res skrajno preprost primer, kako to naredit? Postavil sem stran, kjer se lahko poigravate.

Me pa zanima tudi pravilna uporaba parametrov. Recimo, jaz sem parameter imel tak:
boxInput=test&btnSubmit

Enivej, vesel bi bil kakega delujocega primercka.:))


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Ziga Dolhar ::

Ob vpisu nekega teksta in pritisku na submit, se mi ta tekst potem prikaže zgoraj.

A ni kul?
https://dolhar.si/

NavadniNimda ::

Microsoft, ne vem če te prav štekam - ti bi rad naredil program, ki bi klical HTTP POST na nekem URLu? Jaz sem nekaj podobnega naredil za upload slik (:D). Na žalost je to nekaj let nazaj, ko še ni bilo .NET in sem moral narest v VisualBasic 6.;(( Povej če to iščeš, sej ni tolk kompliciran, samo malo se je potrebno popepčkat.;)

Microsoft ::

Dddd. Ne res.:P

Ok. Lej, da napisem enega od primerov kode, ki sem ga nasel in neuspesno uporabil:
string ulr = "http://localhost";
string param = "boxInput=test&btnSubmit"
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.ContentType = "application/x-www-form-urlencoded";
req.Method = WebRequestMethods.Http.Post;
byte[] bytes = Encoding.ASCII.GetBytes(param);
req.ContentLength = bytes.Length;
Stream stream = req.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
stream.Close();
WebResponse resp = req.GetResponse();
StreamReader sr = new StreamReader(resp.GetResponseStream());
string read = sr.ReadToEnd().Trim();


Zdej sem to zadevo spreminjal, kaj dodal, odstranil. Samo ne dela.


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

OwcA ::

Lahko, da ne dela zaradi tistih abotnih tokenov, ki jih ASP tlači zraven (zaradi session-ov se mi zdi).

P.S. 13 vrstic za en ušiv request ... >:D
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

64202 ::

Poglej s kakim sniferjem (ethereal), ce se sploh kaj poslje... in kaj pride nazaj
I am NaN, I am a free man!

Microsoft ::

Poslje se sigurno POST, ker sem to gledal v logih. Ok. Etherela pa se nisem probal. Pa bom. Samo nazaj tudi dobim. Ker zdej sem si tko naredil, da vraca trenutno uro. In ce v programu veckrat izvedem, dobim vedno updatano uro nazaj.


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

OwcA ::

Napaka je nekje pri tebi na strežniku, ker tudi meni ne vrne prav (koda, ki sicer deluje, namreč).
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

Microsoft ::

Sam to "napako" se more dat zaobit. Mislim, ce gres browzat gor, vpises neki v textbox, kliknes na gumb, se ti izpise gor string. Zakaj potem to program ne bi bil zmozen? Oz. kaj je razlika?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

OwcA ::

Kot rečeno:
Lahko, da ne dela zaradi tistih abotnih tokenov, ki jih ASP tlači zraven (zaradi session-ov se mi zdi).

Pri čemer je abotni token recimo
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
value="/wEWAwLP7c/fAgL1ndKzBALCi9reA3rz9TAM+7Lbn9NlA+TwS5cqsYyd" />
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

MaCoFaCo ::

@Microsoft: a ti vrne internal server error?

Microsoft ::

Ce dam kot parameter zraven __VIEWSTATE, pol ja, sicer pa ne.


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

MaCoFaCo ::

No, podobno kot OwcA, mislim da je problem ravno v tem ViewState-u, ki ga vlači s seboj... Mislim da sem enkrat hekal eno .Net stran (rabu sem ene podatke črpat), pa mi je nekak ratalo hendlat tale viewstate...

MaCoFaCo ::

Torej najprej sm poslal request, pol sm dobu nazaj stran, sparsal vrednost viewstate-a, in potem poslal še en request. Pa mislim da sem moral še neke kukije nastavljat, skratka štala...

Sam je pa delal na konc :D

Microsoft ::

Ok. Kaj pa glede parametrov. Kaksna je prava sintaksa recimo za to, da reces naj prtisne na gumb? Recimo, ce ma gumb id btnSubmit, kako ga potem v parameter vkljucis?


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

MaCoFaCo ::

ime1=vrednost1&ime2=vrednost2&...&imeN=vrednostN

kjer je imeN NAME in ne ID. Pa imeN in vrednostN morata bit url encoded.

Upam da nisem narobe povedal...

OwcA ::

Tako je.

Recimo primer v Pythonu:

import httplib

conn = httplib.HTTPConnection("en.wikipedia.org")
conn.request("POST", "/wiki/Special:Search", "search=Slovenia")
print conn.getresponse().read()


EDIT: malo manj dvoumen primer
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

OwcA ::

Če pišeš obe aplikaciji sam, je precej bolj smelo, da imaš na eni strani web-service, kot pa da hackaš forme.
Otroška radovednost - gonilo napredka.

Microsoft ::

Ne gre niti tole: klik :| Kle je cela koda.

Jst mam tko, da je ASP.NET stran z neko formo, http post pa delam iz console ap.


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

jype ::

Lej, Dzimi...

Povedali so ti, da s kladivom zagas drva, ampak ti si ne das dopovedat, da uporabljas a) napacno orodje b) napacne surovine c) napacno metodo.

Ce je aplikacija na strezniku pokvarjena (tvoja asp.net zadeva je ziher pokvarjena, ker ocitno ne deluje), je to verjetno zato, ker si nekje v nekaksnih nastavitvah dolocil, da se morajo sem in tja prenasat te cudaske __VIEWSTATE zadeve. To izklopi, pa bo slo verjetno lazje.

Zacni programirat na nivoju, do katerega sega tvoje znanje. Ce ne ves, kaj je POST, potem poisci orodje, ki to skrije pred tabo. Ce takega orodja ni, si pac preberi kako literaturo.

Predvsem pa si instaliraj okolje, v katerem lahko vidis, zakaj stvari crknejo. Super orodje za igrat se programerje je recimo Linux z namescenim apache2/mod_python oz. PHP, ce ti je ta jezik bolj pri srcu. Se vedno se lahko kasneje lotis zahtevnejsih reci.

MaCoFaCo ::

@OwcA: se popolnoma strinjam. V mojem konkretnem primeru je bila aplikacija tuja, tako da je bil to edini način dostopa.

MaCoFaCo ::

@MS: če hočeš prožit dogodke, recimo na gumbih, moraš upoštevat še __EVENTTARGET in __EVENTARGUMENT.

Microsoft ::

jype, Viewstate je tam z namenom, tko da tega ne mislim odstranjevat. In da je ta stran pokvarjena, je lame izgovor. Brskalniki delajo, viewstate je dokumentiran, zakaj je tam, tako da se stvar mora dat izvest.

Po sekundi iskanja, prva stran, ki je "pokvarjena": www.asp.net


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

kopernik ::

Najprej si vsaj preleti rfc za http protokol, da boš sploh razumel, zakaj se gre. Nato preštudiraj še html forme.

Popolnoma nepomembno je, da je na serverju ASP. Komunikacija poteka po http protokolu, ki je dovolj splošen, da se ni potrebno obremenjevati z posebnostmi strežnika (če je le-ta kolikor toliko pravilno napisan).

Kaj moraš storiti (saj so ti že zgoraj povedali, ampak vseeno ponavljam):
1. http request na tvojo stran (ki ti vrne html s formo s tistimi hidden polji)
2. iz html-ja izluščiš vse parametre (oz. input polja, vključno s hidden inputi)
3. iz html-ja izluščiš akcijo, ki naj se izvede ob submitu (action atribut v formi)
4. narediš post na akcijo z izluščenimi parametri.

Za ukrotitev html-ja uporabi kakšen parser, če ti ne grejo regularni izrazi.

lp


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C# asp.NET web forma] Kam zgine cookie oz. zkj se izbriše?

Oddelek: Programiranje
61116 (930) Morenov
»

ASP.NET + C# vprašanje

Oddelek: Programiranje
342767 (1781) Morenov
»

Avtomatično prepoznati POST spremenljivke

Oddelek: Programiranje
121575 (1368) AnonimkeOP
»

[C#] WebResponse vrne error 404

Oddelek: Programiranje
51024 (985) darkolord
»

kaj zna c#

Oddelek: Programiranje
151756 (1568) snow

Več podobnih tem