Portál AbcLinuxu, 13. května 2025 19:45

Dotaz: python a post

2.5.2006 12:54 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
python a post
Přečteno: 147×
Odpovědět | Admin
Zdravím, snažím se dostat do jedné CGI aplikace v pythonu XML soubor pomocí metody POST.

K testování používám wget, žádná data ale nemohu načíst :-/

wget --post-file=muj_soubor.xml http://localhost/program.py
[...]
form = cgi.FieldStorage()
print form
[...]
Odpověď ze serveru:
FieldStorage(None, None, [])
Jak na to? Jak načíst XML soubor, který není obsažen v žádném formuláři?

Dík
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.5.2006 13:03 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: python a post
Odpovědět | | Sbalit | Link | Blokovat | Admin
A máš v tom souboru data pro HTTP POST?
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
2.5.2006 13:49 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
Rozbalit Rozbalit vše Re: python a post
Ano, to by mohla byt chyba - nejsem si vedom toho, že bych data nějak speciálně upravoval pro metodu Post:
cat soubor.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Execute service="WPS" version="0.4.0" store="true" status="false">
    <ows:Identifier>Buffer</ows:Identifier>
    <DataInputs>
        <Input>
            <ows:Identifier>InputPolygon</ows:Identifier>
            <ows:Title>Playground area</ows:Title>
            <ComplexValueReference
ows:reference="http://foo.bar/some_WFS_request.xml"
schema="http://foo.bar/gml_polygon_schema.xsd" />
        </Input>
        <Input>
            <ows:Identifier>BufferDistance</ows:Identifier>
            <ows:Title>Distance which people will walk to get to a
playground</ows:Title>
            <LiteralValue uom="meters">400</LiteralValue>
        </Input>
    </DataInputs>
    <OutputDefinitions>
        <Output>
            <ows:Identifier>BufferedPolygon</ows:Identifier>
            <ows:Title>Area serviced by playground.</ows:Title>
            <ows:Abstract>Area within which most users of this playground will
live.</ows:Abstract>
        </Output>
    </OutputDefinitions>
</Execute>

kde se prosím dočtu, jak by ta data měla vypadat? nepodařilo se mi zformulovat ten správný dotaz do googlu, w3.org po rychlém náhledu také mlčí.

díky
2.5.2006 13:15 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: python a post
Odpovědět | | Sbalit | Link | Blokovat | Admin
FieldStorage() nejspíš data poslaná přes POST zpracuje a vytváří z nich příslušné proměnné podle konvencí. Místo toho je potřeba mít přístup rovnou k streamu, který následuje v HTTP po hlavičkách. Nevím, zda to modul cgi umí, případně by bylo nutné zvolit jiný modul. A jenom číst ze standardního vstupu nelze?
2.5.2006 13:42 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
Rozbalit Rozbalit vše Re: python a post
Neco delam spatne..
for line in sys.stdin.readlines():
      print line
a nic :-/
2.5.2006 21:23 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: python a post
Obecně CGI by při metodě POST mělo dostávat data na standardní vstup, nepředpokládám, že by s tím Python prováděl nějaká kouzla. Ale standardní výstup CGI je zase přesměrován na klienta, takže si výpis buď zkuste uložit do nějakého souboru, nebo tomu dejte alespoň formu HTTP odpovědi:
print "HTTP/1.0 200 OK\r\n"
print "Content-Type: text/plain"
print "\r\n"
for line in sys.stdin.readlines():
  print line

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.