By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,359 Members | 1,495 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,359 IT Pros & Developers. It's quick & easy.

how-to POST form data to ASP pages?

P: n/a
I need to post form data to an ASP page that looks like this on the page
itself...

<form method='POST'><input src=\icons\devices\coffee-on.gif type='image'
align='absmiddle' width=16 height=16 title='Off'><input type='hidden'
value='Image' name='Action'><input type='hidden' value='hs.ExecX10ByName
"Kitchen Espresso Machine", "Off", 100'></form>

I've been trying this but I get a syntax error...
params = urllib.urlencode({'hidden': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "On", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)

Can someone help out and validate I'm on the right/wrong track and help with
the syntax?

thanks!


Dec 27 '05 #1
Share this Question
Share on Google+
11 Replies


P: n/a
"livin" <livin@@cox.net> writes:
I need to post form data to an ASP page that looks like this on the page
itself...
<form method='POST'><input src=\icons\devices\coffee-on.gif type='image'
align='absmiddle' width=16 height=16 title='Off'><input type='hidden'
value='Image' name='Action'><input type='hidden' value='hs.ExecX10ByName
"Kitchen Espresso Machine", "Off", 100'></form>
I've been trying this but I get a syntax error...
params = urllib.urlencode({'hidden': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "On", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)


urlencode doesn't care about the type of the input element (or that
the page is ASP), just the name/value pairs. You want:

params = urllib.urlencode({'Action': 'Image', ...})

The provided HTML doesn't say what the name of the second hidden input
field is. It's not at all clear what should be passed to the server in
this case.

It looks like you tried to break a string across a line boundary, but
that may be your posting software. If you did, then that's what's
generating a syntax error, and a good indication that you should try
reading the tutorial.

<mike
--
Mike Meyer <mw*@mired.org> http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.
Dec 27 '05 #2

P: n/a
Mike,
I appreciate the help... I'm a noobie to Python. I know vbscript & jscript
but nothing else.

I obviously do not need to submit the images

my code looks like this but it is not working... any ideas?
params = urllib.urlencode({'action': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "Off", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)

"Mike Meyer" <mw*@mired.org> wrote in message
news:86************@bhuda.mired.org...
"livin" <livin@@cox.net> writes:
I need to post form data to an ASP page that looks like this on the page
itself...
<form method='POST'><input src=\icons\devices\coffee-on.gif type='image'
align='absmiddle' width=16 height=16 title='Off'><input type='hidden'
value='Image' name='Action'><input type='hidden' value='hs.ExecX10ByName
"Kitchen Espresso Machine", "Off", 100'></form>
I've been trying this but I get a syntax error...
params = urllib.urlencode({'hidden': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "On", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)


urlencode doesn't care about the type of the input element (or that
the page is ASP), just the name/value pairs. You want:

params = urllib.urlencode({'Action': 'Image', ...})

The provided HTML doesn't say what the name of the second hidden input
field is. It's not at all clear what should be passed to the server in
this case.

It looks like you tried to break a string across a line boundary, but
that may be your posting software. If you did, then that's what's
generating a syntax error, and a good indication that you should try
reading the tutorial.

<mike
--
Mike Meyer <mw*@mired.org> http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more
information.

Dec 28 '05 #3

P: n/a
"livin" <livin@@cox.net> writes:
Mike,
I appreciate the help... I'm a noobie to Python. I know vbscript & jscript
but nothing else.

I obviously do not need to submit the images

my code looks like this but it is not working... any ideas?
params = urllib.urlencode({'action': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "Off", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)


No ideas. What does "not working" mean? Do you get a traceback from
Python? If so, share it - cause what I see here isn't legal Python. Do
you get an error message from the kitchen.asp form handler? If so,
....

<mike
--
Mike Meyer <mw*@mired.org> http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.

Dec 28 '05 #4

P: n/a
Mike,
I'm not a coder really at all (I dabble with vbscript & jscript) but an
asking for help to get this working.

I have tried this...

params = urllib.urlencode({'action': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "On", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)

Can you suggest the correct code to get this working?

I appreciate the help!

Aaron


"Mike Meyer" <mw*@mired.org> wrote in message
news:86************@bhuda.mired.org...
"livin" <livin@@cox.net> writes:
I need to post form data to an ASP page that looks like this on the page
itself...
<form method='POST'><input src=\icons\devices\coffee-on.gif type='image'
align='absmiddle' width=16 height=16 title='Off'><input type='hidden'
value='Image' name='Action'><input type='hidden' value='hs.ExecX10ByName
"Kitchen Espresso Machine", "Off", 100'></form>
I've been trying this but I get a syntax error...
params = urllib.urlencode({'hidden': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "On", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)


urlencode doesn't care about the type of the input element (or that
the page is ASP), just the name/value pairs. You want:

params = urllib.urlencode({'Action': 'Image', ...})

The provided HTML doesn't say what the name of the second hidden input
field is. It's not at all clear what should be passed to the server in
this case.

It looks like you tried to break a string across a line boundary, but
that may be your posting software. If you did, then that's what's
generating a syntax error, and a good indication that you should try
reading the tutorial.

<mike
--
Mike Meyer <mw*@mired.org> http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more
information.

Jan 1 '06 #5

P: n/a
[livin]
I'm not a coder really at all (I dabble with vbscript & jscript) but an
asking for help to get this working.

I have tried this...

params = urllib.urlencode({'action': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "On", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)


You should try to phrase your question so that it is easier for us to
understand what is going wrong, and thus help you to correct it.

As Mike already suggested, you have a string that may be spread over two
lines, which would be illegal python syntax, and which would give a
SyntaxError if run. You should be sure that this is not the cause of
your problem before going further.

The following code should do the same as the above, but not suffer from
the line breaks problem.

name_value_pairs = {
'action': 'hs.ExecX10ByName "Kitchen Espresso Machine", "On", 100'
}
params = urllib.urlencode(name_value_pairs)
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)

BTW, it looks to me like you may be opening up a security hole in your
application. The following string looks very like a VB function
invocation: 'hs.ExecX10ByName "Kitchen Espresso Machine", "On", 100'

Are you executing the contents of form input fields as program code?
That's highly inadvisable from a security point of view.

Happy New Year.

--
alan kennedy
------------------------------------------------------
email alan: http://xhaus.com/contact/alan
Jan 1 '06 #6

P: n/a
Hi Alan,

I have tried the code you suggested and a more simple set of post parameters
(below).

import urllib
name_value_pairs = {'control_device': 'Kitchen Lights=off'}
params = urllib.urlencode(name_value_pairs)
urllib.urlopen("http://192.168.1.11:80", params)
Either way I get this error log...

File "Q:\python\python23.zlib\urllib.py", line 78, in urlopen
File "Q:\python\python23.zlib\urllib.py", line 183, in open
File "Q:\python\python23.zlib\urllib.py", line 297, in open_http
File "Q:\python\python23.zlib\httplib.py", line 712, in endheaders
File "Q:\python\python23.zlib\httplib.py", line 597, in _send_output
File "Q:\python\python23.zlib\httplib.py", line 576, in send
File "<string>", line 1, in sendall
IOError
:
[Errno socket error] (10057, 'Socket is not connected')

"Alan Kennedy" <al****@hotmail.com> wrote in message
news:9b*****************@news.indigo.ie...
[livin]
I'm not a coder really at all (I dabble with vbscript & jscript) but an
asking for help to get this working.

I have tried this...

params = urllib.urlencode({'action': 'hs.ExecX10ByName "Kitchen
Espresso Machine", "On", 100'})
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)


You should try to phrase your question so that it is easier for us to
understand what is going wrong, and thus help you to correct it.

As Mike already suggested, you have a string that may be spread over two
lines, which would be illegal python syntax, and which would give a
SyntaxError if run. You should be sure that this is not the cause of your
problem before going further.

The following code should do the same as the above, but not suffer from
the line breaks problem.

name_value_pairs = {
'action': 'hs.ExecX10ByName "Kitchen Espresso Machine", "On", 100'
}
params = urllib.urlencode(name_value_pairs)
urllib.urlopen("http://192.168.1.11:80/hact/kitchen.asp", params)

BTW, it looks to me like you may be opening up a security hole in your
application. The following string looks very like a VB function
invocation: 'hs.ExecX10ByName "Kitchen Espresso Machine", "On", 100'

Are you executing the contents of form input fields as program code?
That's highly inadvisable from a security point of view.

Happy New Year.

--
alan kennedy
------------------------------------------------------
email alan: http://xhaus.com/contact/alan

Jan 1 '06 #7

P: n/a
[livin]
I have tried the code you suggested and ..
.. Either way I get this error log...

File "Q:\python\python23.zlib\urllib.py", line 78, in urlopen
File "Q:\python\python23.zlib\urllib.py", line 183, in open
File "Q:\python\python23.zlib\urllib.py", line 297, in open_http
File "Q:\python\python23.zlib\httplib.py", line 712, in endheaders
File "Q:\python\python23.zlib\httplib.py", line 597, in _send_output
File "Q:\python\python23.zlib\httplib.py", line 576, in send
File "<string>", line 1, in sendall
IOError
:
[Errno socket error] (10057, 'Socket is not connected')


OK, now we're getting somewhere.

As you can probably guess from the error message, the socket through
which urllib is making the request is not connected to the server. We
have to figure out why.

That library path is unusual: Q:\python\python23.zlib\httplib.py

Python supports reading library modules from a zip file, but the
standard installations generally don't use it, except for Python CE,
i.e. Python for Microsoft Windows PocketPC/CE/WTF. Is this the platform
that you're using? If I remember rightly, Python for Pocket Windows
doesn't support sockets, meaning that urllib wouldn't work on that platform.

Another thing to establish is whether the URL is working correctly, from
a client you know works independently from your script above, e.g. an
ordinary browser. When you submit to your form handling script from an
ordinary browser, does it work?

--
alan kennedy
------------------------------------------------------
email alan: http://xhaus.com/contact/alan
Jan 1 '06 #8

P: n/a
The library is the PC version of 2.3 --- I have done some more testing.

I simplified my .py to only 2 lines...

import urllib
urllib.urlopen('http://192.168.1.11', urllib.urlencode({'control_device':
'Kitchen Lights=off'}))

I get this error...

File "Q:\python\python23.zlib\urllib.py", line 78, in urlopen
File "Q:\python\python23.zlib\urllib.py", line 183, in open
File "Q:\python\python23.zlib\urllib.py", line 297, in open_http
File "Q:\python\python23.zlib\httplib.py", line 712, in endheaders
File "Q:\python\python23.zlib\httplib.py", line 597, in _send_output
File "Q:\python\python23.zlib\httplib.py", line 564, in send
File "Q:\python\python23.zlib\httplib.py", line 548, in connect
IOError
:
[Errno socket error] (10060, 'Operation timed out')

I've taken the commands I'm using from working HTTP & ASP pages.

Here's actual code from an HTML page I'm using for the same device I'm
trying in my .PY...

<form method="post">
<td nowrap class="tableroweven">
<a name="bm83274"></a>
<input type="hidden" name="bookmark" value="83274">
<input type="hidden" name="ref_page" value="stat">
<input type="hidden" name="control_device" value="Kitchen Lights">
<input class="formbutton" type="submit" name="action_on" value="On">
<input class="formbutton" type="submit" name="action_off" value="Off">
<select class="formdropdown" name="selectdim" SIZE="1"
onchange="SubmitForm(this)">
<option selected value="0">0%</option>
<option value="10">10%</option>
<option value="20">20%</option>
<option value="30">30%</option>
<option value="40">40%</option>
<option value="50">50%</option>
<option value="60">60%</option>
<option value="70">70%</option>
<option value="80">80%</option>
<option value="90">90%</option>
<option value="100">100%</option>
</select>
</td></form>


"Alan Kennedy" <al****@hotmail.com> wrote in message
news:E4*****************@news.indigo.ie...
[livin]
I have tried the code you suggested and .. .. Either way I get this error
log...

File "Q:\python\python23.zlib\urllib.py", line 78, in urlopen
File "Q:\python\python23.zlib\urllib.py", line 183, in open
File "Q:\python\python23.zlib\urllib.py", line 297, in open_http
File "Q:\python\python23.zlib\httplib.py", line 712, in endheaders
File "Q:\python\python23.zlib\httplib.py", line 597, in _send_output
File "Q:\python\python23.zlib\httplib.py", line 576, in send
File "<string>", line 1, in sendall
IOError
:
[Errno socket error] (10057, 'Socket is not connected')


OK, now we're getting somewhere.

As you can probably guess from the error message, the socket through which
urllib is making the request is not connected to the server. We have to
figure out why.

That library path is unusual: Q:\python\python23.zlib\httplib.py

Python supports reading library modules from a zip file, but the standard
installations generally don't use it, except for Python CE, i.e. Python
for Microsoft Windows PocketPC/CE/WTF. Is this the platform that you're
using? If I remember rightly, Python for Pocket Windows doesn't support
sockets, meaning that urllib wouldn't work on that platform.

Another thing to establish is whether the URL is working correctly, from a
client you know works independently from your script above, e.g. an
ordinary browser. When you submit to your form handling script from an
ordinary browser, does it work?

--
alan kennedy
------------------------------------------------------
email alan: http://xhaus.com/contact/alan

Jan 1 '06 #9

P: n/a
The library is the PC version of 2.3 --- I have done some more testing.

I simplified my .py to only 2 lines...

import urllib
urllib.urlopen('http://192.168.1.11', urllib.urlencode({'control_device':
'Kitchen Lights=off'}))

I get this error...

File "Q:\python\python23.zlib\urllib.py", line 78, in urlopen
File "Q:\python\python23.zlib\urllib.py", line 183, in open
File "Q:\python\python23.zlib\urllib.py", line 297, in open_http
File "Q:\python\python23.zlib\httplib.py", line 712, in endheaders
File "Q:\python\python23.zlib\httplib.py", line 597, in _send_output
File "Q:\python\python23.zlib\httplib.py", line 564, in send
File "Q:\python\python23.zlib\httplib.py", line 548, in connect
IOError
:
[Errno socket error] (10060, 'Operation timed out')

I've taken the commands I'm using from working HTTP & ASP pages.

Here's actual code from an HTML page I'm using for the same device I'm
trying in my .PY...

<form method="post">
<td nowrap class="tableroweven">
<a name="bm83274"></a>
<input type="hidden" name="bookmark" value="83274">
<input type="hidden" name="ref_page" value="stat">
<input type="hidden" name="control_device" value="Kitchen Lights">
<input class="formbutton" type="submit" name="action_on" value="On">
<input class="formbutton" type="submit" name="action_off" value="Off">
<select class="formdropdown" name="selectdim" SIZE="1"
onchange="SubmitForm(this)">
<option selected value="0">0%</option>
<option value="10">10%</option>
<option value="20">20%</option>
<option value="30">30%</option>
<option value="40">40%</option>
<option value="50">50%</option>
<option value="60">60%</option>
<option value="70">70%</option>
<option value="80">80%</option>
<option value="90">90%</option>
<option value="100">100%</option>
</select>
</td></form>

"Dennis Lee Bieber" <wl*****@ix.netcom.com> wrote in message
news:bk********************************@4ax.com...
On Sun, 1 Jan 2006 12:35:06 -0700, "livin" <livin@@cox.net> declaimed
the following in comp.lang.python:
IOError
:
[Errno socket error] (10057, 'Socket is not connected')


That doesn't look like anything to do, directly, with parameter
encodings... Rather, it looks like your server is closing the connection
unexpectedly.

You've got the Python source for everything down to the call to
"sendall", examine it -- it might help figure out where things are
failing. ("sendall" looks to be in a compiled module)
--
================================================== ============ <
wl*****@ix.netcom.com | Wulfraed Dennis Lee Bieber KD6MOG <
wu******@dm.net | Bestiaria Support Staff <
================================================== ============ <
Home Page: <http://www.dm.net/~wulfraed/> <
Overflow Page: <http://wlfraed.home.netcom.com/> <

Jan 2 '06 #10

P: n/a
Dennis, Alan, Mike... help?

According to the HomeSeer (I'm trying to trigger events on the HomeSeer
application) documentation I do not need to use ASP. The simple HTTP command
should be accepted directly from a HTML page.

Here's the page in the online manual for Homeseer with the info:

HomeSeer info on Controlling Devices from HTML -
http://www.homeseer.com/support/home..._own_pages.htm
I appreciate the assistance.

"livin" <livin@@cox.net> wrote in message
news:2b%tf.249$B93.242@fed1read07...
The library is the PC version of 2.3 --- I have done some more testing.

I simplified my .py to only 2 lines...

import urllib
urllib.urlopen('http://192.168.1.11', urllib.urlencode({'control_device':
'Kitchen Lights=off'}))

I get this error...

File "Q:\python\python23.zlib\urllib.py", line 78, in urlopen
File "Q:\python\python23.zlib\urllib.py", line 183, in open
File "Q:\python\python23.zlib\urllib.py", line 297, in open_http
File "Q:\python\python23.zlib\httplib.py", line 712, in endheaders
File "Q:\python\python23.zlib\httplib.py", line 597, in _send_output
File "Q:\python\python23.zlib\httplib.py", line 564, in send
File "Q:\python\python23.zlib\httplib.py", line 548, in connect
IOError
:
[Errno socket error] (10060, 'Operation timed out')

I've taken the commands I'm using from working HTTP & ASP pages.

Here's actual code from an HTML page I'm using for the same device I'm
trying in my .PY...

<form method="post">
<td nowrap class="tableroweven">
<a name="bm83274"></a>
<input type="hidden" name="bookmark" value="83274">
<input type="hidden" name="ref_page" value="stat">
<input type="hidden" name="control_device" value="Kitchen Lights">
<input class="formbutton" type="submit" name="action_on" value="On">
<input class="formbutton" type="submit" name="action_off" value="Off">
<select class="formdropdown" name="selectdim" SIZE="1"
onchange="SubmitForm(this)">
<option selected value="0">0%</option>
<option value="10">10%</option>
<option value="20">20%</option>
<option value="30">30%</option>
<option value="40">40%</option>
<option value="50">50%</option>
<option value="60">60%</option>
<option value="70">70%</option>
<option value="80">80%</option>
<option value="90">90%</option>
<option value="100">100%</option>
</select>
</td></form>

"Dennis Lee Bieber" <wl*****@ix.netcom.com> wrote in message
news:bk********************************@4ax.com...
On Sun, 1 Jan 2006 12:35:06 -0700, "livin" <livin@@cox.net> declaimed
the following in comp.lang.python:
IOError
:
[Errno socket error] (10057, 'Socket is not connected')


That doesn't look like anything to do, directly, with parameter
encodings... Rather, it looks like your server is closing the connection
unexpectedly.

You've got the Python source for everything down to the call to
"sendall", examine it -- it might help figure out where things are
failing. ("sendall" looks to be in a compiled module)
--
> ================================================== ============ <
> wl*****@ix.netcom.com | Wulfraed Dennis Lee Bieber KD6MOG <
> wu******@dm.net | Bestiaria Support Staff <
> ================================================== ============ <
> Home Page: <http://www.dm.net/~wulfraed/> <
> Overflow Page: <http://wlfraed.home.netcom.com/> <


Jan 4 '06 #11

P: n/a
Any ideas on how to troubleshoot the 'Operation timed out' error, or
work-around it?

I'm just sending a POST to a windows-based web server (non-IIS).

thanks!
"livin" <livin@@cox.net> wrote in message
news:03Suf.4623$B93.2306@fed1read07...
Dennis, Alan, Mike... help?

According to the HomeSeer (I'm trying to trigger events on the HomeSeer
application) documentation I do not need to use ASP. The simple HTTP
command should be accepted directly from a HTML page.

Here's the page in the online manual for Homeseer with the info:

HomeSeer info on Controlling Devices from HTML -
http://www.homeseer.com/support/home..._own_pages.htm
I appreciate the assistance.

"livin" <livin@@cox.net> wrote in message
news:2b%tf.249$B93.242@fed1read07...
The library is the PC version of 2.3 --- I have done some more testing.

I simplified my .py to only 2 lines...

import urllib
urllib.urlopen('http://192.168.1.11', urllib.urlencode({'control_device':
'Kitchen Lights=off'}))

I get this error...

File "Q:\python\python23.zlib\urllib.py", line 78, in urlopen
File "Q:\python\python23.zlib\urllib.py", line 183, in open
File "Q:\python\python23.zlib\urllib.py", line 297, in open_http
File "Q:\python\python23.zlib\httplib.py", line 712, in endheaders
File "Q:\python\python23.zlib\httplib.py", line 597, in _send_output
File "Q:\python\python23.zlib\httplib.py", line 564, in send
File "Q:\python\python23.zlib\httplib.py", line 548, in connect
IOError
:
[Errno socket error] (10060, 'Operation timed out')

I've taken the commands I'm using from working HTTP & ASP pages.

Here's actual code from an HTML page I'm using for the same device I'm
trying in my .PY...

<form method="post">
<td nowrap class="tableroweven">
<a name="bm83274"></a>
<input type="hidden" name="bookmark" value="83274">
<input type="hidden" name="ref_page" value="stat">
<input type="hidden" name="control_device" value="Kitchen Lights">
<input class="formbutton" type="submit" name="action_on" value="On">
<input class="formbutton" type="submit" name="action_off" value="Off">
<select class="formdropdown" name="selectdim" SIZE="1"
onchange="SubmitForm(this)">
<option selected value="0">0%</option>
<option value="10">10%</option>
<option value="20">20%</option>
<option value="30">30%</option>
<option value="40">40%</option>
<option value="50">50%</option>
<option value="60">60%</option>
<option value="70">70%</option>
<option value="80">80%</option>
<option value="90">90%</option>
<option value="100">100%</option>
</select>
</td></form>

"Dennis Lee Bieber" <wl*****@ix.netcom.com> wrote in message
news:bk********************************@4ax.com...
On Sun, 1 Jan 2006 12:35:06 -0700, "livin" <livin@@cox.net> declaimed
the following in comp.lang.python:

IOError
:
[Errno socket error] (10057, 'Socket is not connected')
That doesn't look like anything to do, directly, with parameter
encodings... Rather, it looks like your server is closing the connection
unexpectedly.

You've got the Python source for everything down to the call to
"sendall", examine it -- it might help figure out where things are
failing. ("sendall" looks to be in a compiled module)
--
> ================================================== ============ <
> wl*****@ix.netcom.com | Wulfraed Dennis Lee Bieber KD6MOG <
> wu******@dm.net | Bestiaria Support Staff <
> ================================================== ============ <
> Home Page: <http://www.dm.net/~wulfraed/> <
> Overflow Page: <http://wlfraed.home.netcom.com/> <



Jan 8 '06 #12

This discussion thread is closed

Replies have been disabled for this discussion.