AW: AW: AW: [Zope] Source from form result.

Tino Wildenhain tino@wildenhain.de
Fri, 04 May 2001 06:51:23 +0200


Hi Marc,

so you had definitively more work then with ZClient ;)
But nice to hear you have it working now ;)

Regards
Tino

--On Freitag, 4. Mai 2001 01:30 +0200 Marc Fischer <marcbpc@gmx.de> wrote:

> Hey, thanks to all of you, that tried to help me.
>
> Finally I had success with the httplib funktion. ... :-)))
>
> Marc
>
>
>
>> -----Ursprungliche Nachricht-----
>> Von: zope-admin@zope.org [mailto:zope-admin@zope.org]Im Auftrag von Tino
>> Wildenhain
>> Gesendet: Donnerstag, 3. Mai 2001 22:51
>> An: Marc Fischer; Danny William Adair; Paula Mangas
>> Cc: zope@zope.org
>> Betreff: Re: AW: AW: [Zope] Source from form result.
>>
>>
>> Hi Marc,
>>
>> its simply:
>>
>> <dtml-with "web_client('http://server/',x='a',y='b')">
>> <dtml-var body>
>> </dtml-with>
>>
>> in your case :)
>> x and y go into this **kw argument. If this is set,
>> webclient uses POST.
>>
>> HTH
>> Tino Wildenhain.
>>
>> --On Mittwoch, 2. Mai 2001 20:45 +0200 Marc Fischer
>> <marcbpc@gmx.de> wrote:
>>
>> > Hi Tino,
>> >
>> > I think, thats it, what I am looking for. Your Example works
>> fine so far.
>> > But my understanding in python I so low, that I am not able change it
>> > in my needed way. Perhabs you could tell me how to realize this:
>> >
>> > <form action="http://server" method=POST>
>> > <input type=hidden name="x" value="a">
>> > <input type=hidden name="y" value="b">
>> > <input type=submit>
>> > </form>
>> >
>> > and show me how to get the source of the result page?! :-)
>> >
>> > I would be very happy, ... thanx a lot ...
>> >
>> > Marc
>> >
>> >
>> >
>> >
>> >> -----Ursprungliche Nachricht-----
>> >> Von: zope-admin@zope.org [mailto:zope-admin@zope.org]Im
>> Auftrag von Tino
>> >> Wildenhain
>> >> Gesendet: Mittwoch, 2. Mai 2001 15:37
>> >> An: Marc Fischer; Danny William Adair; Paula Mangas
>> >> Cc: zope@zope.org
>> >> Betreff: Re: AW: [Zope] Source from form result.
>> >>
>> >>
>> >> Hi Marc,
>> >>
>> >> zope has a "client" deep in its core :)
>> >> See lib/python/ZPublisher/Client.py
>> >> for more info.
>> >>
>> >> I currently use a external method like this:
>> >>
>> >> > from ZPublisher import Client
>> >>
>> >> def web_client(url = '', username = None, password = None, **kw):
>> >>      '''access http servers'''
>> >>      class gen_res:
>> >>          __allow_access_to_unprotected_subobjects__=1
>> >>      f=gen_res()
>> >>      if kw:
>> >>          f.headers,f.body=Client.call(url,username,password,kw)
>> >>      else:
>> >>          f.headers,f.body=Client.call(url,username,password)
>> >>      return(f)
>> >>
>> >>
>> >> And use it like this:
>> >>
>> >> <dtml-with "web_client('http://server/uri')">
>> >> <dtml-var body>
>> >> </dtml-with>
>> >>
>> >> In Client.py are also methods and functions to map arguments
>> >> to a POST request as you wish.
>> >>
>> >> I think, the above could be a starting point for you.
>> >>
>> >> HTH
>> >> Tino Wildenhain
>> >>
>> >> --On Mittwoch, 2. Mai 2001 12:12 +0200 Marc Fischer
>> >> <marcbpc@gmx.de> wrote:
>> >>
>> >> > Hi Danny,
>> >> >
>> >> > first of all thank you for your detailed help!!! That is
>> >> nearly, what I am
>> >> > looking for, but one problem exists:
>> >> > The page I want to extract (you are right ... its on an external
>> >> > server) does not work with passing the variables in the url.
>> I mean ...
>> >> >
>> >> > http://server?x=a&y=b does not work.
>> >> >
>> >> > I need to do it with a form like:
>> >> >
>> >> > <form action="http://server" method=POST>
>> >> > <input type=hidden name="x" value="a">
>> >> > <input type=hidden name="y" value="b">
>> >> > <input type=submit>
>> >> > </form>
>> >> >
>> >> > That's my big big problem. Btw, ... its legal :-)))
>> >> >
>> >> > Marc
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >> -----Ursprungliche Nachricht-----
>> >> >> Von: Danny William Adair [mailto:Danny@Adair.net]
>> >> >> Gesendet: Mittwoch, 2. Mai 2001 01:26
>> >> >> An: Marc Fischer; Paula Mangas
>> >> >> Cc: zope@zope.org
>> >> >> Betreff: Re: [Zope] Source from form result.
>> >> >>
>> >> >>
>> >> >> Hi Marc,
>> >> >>
>> >> >> When you submit a form to one of your DTML methods or
>> >> documents, all the
>> >> >> form variables will be available without any further work to be
>> >> >> done (REQUEST object, see docs). But if I get you right, you are
>> >> >> not submitting your form to a method of your own. So things are a
>> >> >> bit different here.
>> >> >>
>> >> >> As I understand it, you are submitting your form to someone
>> >> else's server
>> >> >> (since otherwise you would produce the output yourself).
>> Maybe you're
>> >> >> providing an input form that is directed to a search engine,
>> >> or something
>> >> >> similar.
>> >> >>
>> >> >> --------------------------------------------
>> >> >> <form action="http://server" method=POST>
>> >> >> <input type=hidden name="x" value="a">
>> >> >> <input type=hidden name="y" value="b">
>> >> >>
>> >> >> <input type="text" name="myInput">
>> >> >>
>> >> >> <input type=submit>
>> >> >> </form>
>> >> >> --------------------------------------------
>> >> >>
>> >> >> If so, then you should take a look at the "KebasData" Product:
>> >> >> http://www.zope.org/Members/kedai/KebasData
>> >> >>
>> >> >> Just instantiate a KebasData object, let's say "results". Take a
>> >> >> look at the
>> >> >> product's documentation to see how you can extract the
>> >> relevant code from
>> >> >> the external server's result page. I'll try to get you started
>> >> >> right away:
>> >> >>
>> >> >> Set the regular expression patterns properly, start with
>> >> >>
>> >> >> .*
>> >> >>
>> >> >> as the search pattern and leave the rest blank ("url" will be set
>> >> >> by a DTML
>> >> >> method you create, see below), then you'll get the entire
>> >> >> external page, you
>> >> >> can change that later to fit your needs.
>> >> >>
>> >> >> Then create a DTML method next to it, lets say
>> "getResults". It could
>> >> >> look like this:
>> >> >>
>> >> >> <dtml-var standard_html_header>
>> >> >> <h2>RESULTS</h3>
>> >> >> <dtml-with results>
>> >> >>   <dtml-call "REQUEST.set('new_url', 'http://server?search=' +
>> >> myInput)">
>> >> >>   <dtml-call "get_matched(new_url)">
>> >> >>   <dtml-in match>
>> >> >>     <dtml-var result><br/>
>> >> >>   </dtml-in>
>> >> >> </dtml-with>
>> >> >> <dtml-var standard_html_footer>
>> >> >>
>> >> >> This will fetch the page you want to display by calling
>> >> >> "get_matched(new_url)", you construct that new_url
>> dynamically, using
>> >> >> your form variable "myInput". Then it iterates through the results
>> >> >> list and spits
>> >> >> out the parts that matched your query, appending a <br/> after
>> >> each match
>> >> >> (if you started with .* as the pattern, the list will only
>> >> have one item,
>> >> >> holding the complete page).
>> >> >>
>> >> >> Oh, right: your DTML method should have a proxy role that has the
>> >> >> right to "change KebasData" (or maybe even "View
>> >> >> management_screens"?) on the KebasData object "results", since it
>> >> >> calls its function
>> >> >> "get_matched", which
>> >> >> is usually only called by clicking "Initialize!" in the
>> >> >> management screen of
>> >> >> the KebasData object.
>> >> >>
>> >> >> Now you just send your form to "getResults" (instead of the
>> >> >> external server
>> >> >> directly), and let your DTML method do the rest:
>> >> >>
>> >> >> --------------------------------------------
>> >> >> <form action="getResults" method=POST>
>> >> >> <input type=hidden name="x" value="a">
>> >> >> <input type=hidden name="y" value="b">
>> >> >>
>> >> >> <input type="text" name="myInput">
>> >> >>
>> >> >> <input type=submit>
>> >> >> </form>
>> >> >> --------------------------------------------
>> >> >>
>> >> >> Later, you could put the "getResults" code in a python script,
>> >> then it's
>> >> >> easier to do further processing with your fetched data.
>> >> >>
>> >> >> hth,
>> >> >> Danny
>> >> >>
>> >> >> P.S.: Check the legal stuff before extracting other
>> people's pages ;-)
>> >> >>
>> >> >> >>> -----Ursprungliche Nachricht-----
>> >> >> >>> Von: zope-admin@zope.org [mailto:zope-admin@zope.org]Im
>> >> >> Auftrag von Marc
>> >> >> >>> Fischer
>> >> >> >>> Gesendet: Dienstag, 1. Mai 2001 11.43p
>> >> >> >>> An: Paula Mangas; Marc Fischer
>> >> >> >>> Cc: zope@zope.org
>> >> >> >>> Betreff: AW: [Zope] Source from form result.
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> Hi,
>> >> >> >>>
>> >> >> >>> I think there was an understanding problem. I want to get the
>> >> >> >>> source code of
>> >> >> >>> the result that is displayed in the browser, after klicking on
>> >> >> >>> the submit
>> >> >> >>> button. I want to be able to handle this source perhabs
>> to create
>> >> >> >>> a dtmlmethod wiht it, or do some string extractions with it.
>> >> >> >>>
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> > -----Ursprungliche Nachricht-----
>> >> >> >>> > Von: Paula Mangas [mailto:pamm@students.si.fct.unl.pt]
>> >> >> >>> > Gesendet: Dienstag, 1. Mai 2001 13:25
>> >> >> >>> > An: Marc Fischer
>> >> >> >>> > Cc: zope@zope.org
>> >> >> >>> > Betreff: Re: [Zope] Source from form result.
>> >> >> >>> >
>> >> >> >>> >
>> >> >> >>> > On Tue, 1 May 2001, Marc Fischer wrote:
>> >> >> >>> >
>> >> >> >>> > > Hi,
>> >> >> >>> > >
>> >> >> >>> > > I want to get the HTML result from a form into a
>> dtml method.
>> >> >> >>> > So I need a
>> >> >> >>> > > way to handle this result, but HOW.
>> >> >> >>> > >
>> >> >> >>> > > The form ist like this:
>> >> >> >>> > >
>> >> >> >>> > > <form action="http://server" method=POST>
>> >> >> >>> > > <input type=hidden name="x" value="a">
>> >> >> >>> > > <input type=hidden name="y" value="b">
>> >> >> >>> > > <input type=submit>
>> >> >> >>> > > </form>
>> >> >> >>> > >
>> >> >> >>> > > If I klick on submit, I get the result displayed in the
>> >> >> >>> Browser, but I
>> >> >> >>> > > cannot work with it.
>> >> >> >>> > > Perhaps someone could help me???
>> >> >> >>> >
>> >> >> >>> >
>> >> >> >>> > Hi,
>> >> >> >>> >
>> >> >> >>> >
>> >> >> >>> > I think that, if you try
>> >> >> >>> > <form action="http://server/the_method_you_want_to_call"
>> >> >> method=POST>
>> >> >> >>> >
>> >> >> >>> > it will work.
>> >> >> >>> >
>> >> >> >>> > Paula
>> >> >> >>> >
>> >> >> >>>
>> >> >> >>>
>> >> >> >>> _______________________________________________
>> >> >> >>> Zope maillist  -  Zope@zope.org
>> >> >> >>> http://lists.zope.org/mailman/listinfo/zope
>> >> >> >>> **   No cross posts or HTML encoding!  **
>> >> >> >>> (Related lists -
>> >> >> >>>  http://lists.zope.org/mailman/listinfo/zope-announce
>> >> >> >>>  http://lists.zope.org/mailman/listinfo/zope-dev )
>> >> >> >>>
>> >> >>
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > Zope maillist  -  Zope@zope.org
>> >> > http://lists.zope.org/mailman/listinfo/zope
>> >> > **   No cross posts or HTML encoding!  **
>> >> > (Related lists -
>> >> >  http://lists.zope.org/mailman/listinfo/zope-announce
>> >> >  http://lists.zope.org/mailman/listinfo/zope-dev )
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> _______________________________________________
>> >> Zope maillist  -  Zope@zope.org
>> >> http://lists.zope.org/mailman/listinfo/zope
>> >> **   No cross posts or HTML encoding!  **
>> >> (Related lists -
>> >>  http://lists.zope.org/mailman/listinfo/zope-announce
>> >>  http://lists.zope.org/mailman/listinfo/zope-dev )
>> >>
>> >
>>
>>
>>
>>
>>
>> _______________________________________________
>> Zope maillist  -  Zope@zope.org
>> http://lists.zope.org/mailman/listinfo/zope
>> **   No cross posts or HTML encoding!  **
>> (Related lists -
>>  http://lists.zope.org/mailman/listinfo/zope-announce
>>  http://lists.zope.org/mailman/listinfo/zope-dev )
>>
>