Also JSON Daten vom PHP-Script aus an das Python-Script senden klappt wunderbar, wollte jetzt auch die Daten vom Python-Script zum PHP-Script mit JSON kodieren, aber das will nicht.
Ich hab mir eine Klasse gemacht, die sämtliche Kommunikation beinhalten soll, angefangen hab ich jetzt mit dem Login. Die Parameter "user" und "password" kommen von der GUI, diese sollen jetzt mit JSON kodiert an das PHP-Script geschickt werden, aber dort kommt nichts an. Wenn ich die JSON kodierung weglasse, kommen die Daten einwandfrei bei PHP an.
Code: Alles auswählen
import requests
import json
# from PyQt4 import QtGui, QtCore # old imports
from python_qt_binding import QtGui, QtCore # @UnresolvedImport @UnusedImport
from satConstances import * # @UnusedWildImport
class satCom:
def __init__(self):
self.dataPost = {"user" : "",
"password" : "",
"phpSessionID" : "",
"phpSessionTimeout" : 0,
"loggedIn" : False,
"request":""}
def __del__(self):
pass
def checkLogin(self, user, password):
self.dataPost["user"] = user
self.dataPost["password"] = password
self.dataPost["request"] = ("checkLogin",)
print("\n### json.dumps(self.dataPost)") # debug
print(json.dumps(self.dataPost)) # debug
retval = requests.post(url, data=json.dumps(self.dataPost), verify=pemFile)
print("\n### retval.text - mit json") # debug
print(retval.text) # debug
#retval.json() # debug
print("\n### self.dataPost") # debug
print(self.dataPost) # debug
retval = requests.post(url, data=self.dataPost, verify=pemFile)
print("\n### retval.text - ohne json") # debug
print(retval.text) # debug
#retval.json() # debug
if retval["phpSessionID"] > 0:
self.phpSessionID = retval["phpSessionID"]
self.phpSessionTimeout = retval["phpSessionTimeout"]
self.loggedIn = True
Hier mal die Ausgabe auf der Python console (Die Zeilen mit einem ">" davor ist quasi die Ausgabe von PHP):
Code: Alles auswählen
### json.dumps(self.dataPost)
{"loggedIn": false, "phpSessionTimeout": 0, "request": ["checkLogin"], "phpSessionID": "", "user": "", "password": ""}
### retval.text - mit json
>hallo
>Array
>(
>)
>"Kein Benutzer\/Passwort \u00fcbermittelt"
### self.dataPost
{'loggedIn': False, 'phpSessionTimeout': 0, 'request': ('checkLogin',), 'phpSessionID': '', 'user': u'', 'password': u''}
### retval.text - ohne json
>hallo
>Array
>(
> [loggedIn] => False
> [phpSessionTimeout] => 0
> [request] => checkLogin
> [phpSessionID] =>
> [user] =>
> [password] =>
>)
>"Benutzer nicht in DB gefunden,: 0"
Im PHP-Script steht gerade (unteranderem) zu debug Zwecken das:
...daher das "Hallo" in der Ausgabe
Kann mir mal bitte wer 'nen Tipp geben, warum keine POST Daten gesendet werden, wenn diese JSON kodiert sind? Ich finde eigentlich das mein Code ziemlich genau dem entspricht, was die Doku sagt:
http://de.python-requests.org/de/latest ... rte-header Mal davon abgesehen, das ich keinen eigenen Header nutze. Aber auch das habe ich schon probiert und es bringt gar nix.