Ich versuche, diese Zeichenfolge vor dem Absenden zu verschlüsseln.
queryString = 'eventName=' + evt.fields["eventName"] + '&' + 'eventDescription=' + evt.fields["eventDescription"];
Ich versuche, diese Zeichenfolge vor dem Absenden zu verschlüsseln.
queryString = 'eventName=' + evt.fields["eventName"] + '&' + 'eventDescription=' + evt.fields["eventDescription"];
Was Sie suchen, ist urllib.quote_plus
:
safe_string = urllib.quote_plus('string_of_characters_like_these:$#@=?%^Q^$')
#Value: 'string_of_characters_like_these%3A%24%23%40%3D%3F%25%5EQ%5E%24'
In Python 3 ist die urllib
Paket wurde in kleinere Komponenten aufgeteilt. Sie verwenden urllib.parse.quote_plus
(Beachten Sie die parse
Kind-Modul)
import urllib.parse
safe_string = urllib.parse.quote_plus(...)
Sie müssen Ihre Parameter in urlencode()
entweder als eine Abbildung (dict) oder als eine Folge von 2-Tupeln, wie:
>>> import urllib
>>> f = { 'eventName' : 'myEvent', 'eventDescription' : 'cool event'}
>>> urllib.urlencode(f)
'eventName=myEvent&eventDescription=cool+event'
Python 3 oder höher
Utilice urllib.parse.urlencode
:
>>> urllib.parse.urlencode(f)
eventName=myEvent&eventDescription=cool+event
Beachten Sie, dass dies no die Url-Kodierung im üblichen Sinne durchführen (siehe die Ausgabe). Verwenden Sie dazu urllib.parse.quote_plus
.
Versuchen Sie Anfragen anstelle von urllib und Sie müssen sich nicht mit urlencode herumschlagen!
import requests
requests.get('http://youraddress.com', params=evt.fields)
EDITAR:
Wenn Sie geordnete Name-Werte-Paare oder mehrere Werte für einen Namen, dann setzen Sie params wie folgt:
params=[('name1','value11'), ('name1','value12'), ('name2','value21'), ...]
anstatt ein Wörterbuch zu verwenden.
Im Folgenden finden Sie eine vollständige Lösung, die auch einige Fallstricke enthält.
### ********************
## init python (version 2.7.2 )
import urllib
### ********************
## first setup a dictionary of name-value pairs
dict_name_value_pairs = {
"bravo" : "True != False",
"alpha" : "http://www.example.com",
"charlie" : "hello world",
"delta" : "1234567 !@#$%^&*",
"echo" : "user@example.com",
}
### ********************
## setup an exact ordering for the name-value pairs
ary_ordered_names = []
ary_ordered_names.append('alpha')
ary_ordered_names.append('bravo')
ary_ordered_names.append('charlie')
ary_ordered_names.append('delta')
ary_ordered_names.append('echo')
### ********************
## show the output results
if('NO we DO NOT care about the ordering of name-value pairs'):
queryString = urllib.urlencode(dict_name_value_pairs)
print queryString
"""
echo=user%40example.com&bravo=True+%21%3D+False&delta=1234567+%21%40%23%24%25%5E%26%2A&charlie=hello+world&alpha=http%3A%2F%2Fwww.example.com
"""
if('YES we DO care about the ordering of name-value pairs'):
queryString = "&".join( [ item+'='+urllib.quote_plus(dict_name_value_pairs[item]) for item in ary_ordered_names ] )
print queryString
"""
alpha=http%3A%2F%2Fwww.example.com&bravo=True+%21%3D+False&charlie=hello+world&delta=1234567+%21%40%23%24%25%5E%26%2A&echo=user%40example.com
"""
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.