Form Value Won't Post/Submit  | Newbie | | Join Date: Oct 2009
Posts: 5
| |
The html code of the form, and my code are below. I can't get the value to post/submit.. instead I get an error. Can anyone help?
HTML Code of Form: - <form method='post' autocomplete='off'>
-
<input type='hidden' name='action' value='grant-revoke' />
-
<input type='hidden' name='creator_badge_index' value='1' />
-
-
<input type='hidden' name='token' value='92dcd92a8bc16f73f330d118ae1ed891' />
-
<input type='hidden' name='do-grant' value='1' />
-
<div id='grant-div'><span class='label'>Grant badge: </span><input type='text' id='grant-userid' name='grant-userid' value='userid / avatar name' /><input type='submit' value='Grant!' /></div>
-
</form>
My Code: - opener = urllib.request.build_opener()
-
cj = http.cookiejar.MozillaCookieJar()
-
cj.load('C:/Users/Alison/Documents/moz_cookies.txt')
-
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
-
-
params = urllib.parse.urlencode({'grant-userid' : 'Guest_xLolKittyx'})
-
form = urllib.request.OpenerDirector.open('http://www.imvu.com/catalog/web_manage_badges.php?action=grant-revoke&creator_badge_index=1', params)
-
data = form.read()
-
form.close()
-
print(data)
Error Message: - Traceback (most recent call last):
-
File "C:\Python31\htmlparser.py", line 34, in <module>
-
form = urllib.request.OpenerDirector.open('http://www.imvu.com/catalog/web_manage_badges.php?action=grant-revoke&creator_badge_index=1', params)
-
File "C:\Python31\lib\urllib\request.py", line 332, in open
-
req = Request(fullurl, data)
-
File "C:\Python31\lib\urllib\request.py", line 174, in __init__
-
self._parse()
-
File "C:\Python31\lib\urllib\request.py", line 179, in _parse
-
raise ValueError("unknown url type: %s" % self.full_url)
-
ValueError: unknown url type: grant-userid=Guest_xLolKittyx
| | Newbie | | Join Date: Oct 2009
Posts: 2
| | | re: Form Value Won't Post/Submit
You are mixing GET-type (indicated by ? in the URL) and POST-type
parameters. Put the action and creator_badge_index parameters also in
the dictionary. And probably you need to provide the other hidden fields
from the form also.
Something like (untested): - paramdict = {
-
'action': 'grant-revoke',
-
'creator_badge_index': '1',
-
'token': '92dcd92a8bc16f73f330d118ae1ed891',
-
'do-grant': '1',
-
'grant-userid' : 'Guest_xLolKittyx',
-
}
-
params = urllib.parse.urlencode(paramdict)
-
url = 'http://www.imvu.com/catalog/web_manage_badges.php'
-
form = urllib.request.OpenerDirector.open(url, params)
|  | Newbie | | Join Date: Oct 2009
Posts: 5
| | | re: Form Value Won't Post/Submit
Thanks for the response! I changed the code, but I still get an error when it is run.. :/
Error Message: -
Traceback (most recent call last):
-
File "C:\Python31\htmlparser.py", line 40, in <module>
-
form = urllib.request.OpenerDirector.open('http://www.imvu.com/catalog/web_manage_badges.php', params)
-
File "C:\Python31\lib\urllib\request.py", line 332, in open
-
req = Request(fullurl, data)
-
File "C:\Python31\lib\urllib\request.py", line 174, in __init__
-
self._parse()
-
File "C:\Python31\lib\urllib\request.py", line 179, in _parse
-
raise ValueError("unknown url type: %s" % self.full_url)
-
ValueError: unknown url type: action=grant-revoke&creator_badge_index=1&token=92dcd92a8bc16f73f330d118ae1ed891&do-grant=1&grant-userid=Guest_xLolKittyx
-
Oh, and I tried it without the hidden fields as well, but I still get an error.
| | Newbie | | Join Date: Oct 2009
Posts: 2
| | | re: Form Value Won't Post/Submit
OK, there is another problem that I overlooked. - form = urllib.request.OpenerDirector.open(url, params)
is the wrong way to send the request. OpenerDirector.open is an instance method of the class OpenerDirector, not a class method. So that only works if you make an instance and then call the method on that. Like: - opener = urllib.request.build_opener(....)
-
form = opener.open(url, params)
That is only useful if you want a special opener, for example with authentication. In the simple cases you can get away with the standard opener by using urlopen: - form = urllib.request.urlopen(url, params)
(this one tested)
|  | Newbie | | Join Date: Oct 2009
Posts: 5
| | | re: Form Value Won't Post/Submit
I'll close this thread, since Piet is helping me elsewhere. Thanks for everything Piet!
No more responses needed here.
|  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,439 network members.
|