ASIHTTPRequest-post-json an php-server
Habe ich versucht zu posten ein json-Objekt an ein PHP-Skript für die letzten 5 Stunden. Ich habe gelesen, alle docs und es scheint, der code sollte funktionieren, ABER es funktioniert nicht. Der Antrag ist gemacht und erhalten ok, aber ich kann nicht auf die geposteten json-Daten oder nicht einmal wissen, wenn Ihr korrekt übermittelt worden. Ich bekomme immer eine leere php-array, anstelle der json-Daten.
NSString *jsonString = [self.tableDataSource JSONRepresentation];
NSURL *url = [NSURL URLWithString:@"http://myserver.com/test.php"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"];
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request appendPostData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
[request startSynchronous];
hier ist das php Skript (test.php)
$handle = fopen('php://input','r');
$jsonInput = fgets($handle);
$decoded = json_decode($jsonInput,true);
print_r($decoded);
Ich bin mit dem neuesten ASIHttpRequest-code aus https://github.com/pokeb/asi-http-request.git
Was mache ich falsch???????
Cheers,
Trav.
- Dies erfordert zum Debuggen. Ich habe keine Erfahrung mit iPhone-Entwicklung, aber es muss sein, monitoring-tools, zeigen Ihnen den Erfolg, status und response-body einer Anfrage. Auf dem PHP-end, aktivieren Sie
error_reporting(E_ALL);
zur Ausgabe aller möglichen Probleme. - Sie nicht brauchen, um den Zugriff auf die $_POST[] Variablen?
- Hi Pekka, wird nichts zurückgegeben, wenn ich auf error_reporting(E_ALL). Haben Sie weitere Ideen?
- Hallo Les, ich habe versucht, print_r($_POST) und print_r($_GET); ich kann immer noch nicht mit den json-Daten. mehr Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gefunden das Problem. Ich hatte einen SSL-redirect in der apache-vhost-config. Verwendet ein tcp-packet-sniffer, um es zu finden. nachdem ich entfernen Sie die Umleitung war ich in der Lage zu erhalten, die json-Daten mit:
Dank an alle die mitgeholfen haben.
Ich bin ziemlich sicher, dass ASIHTTPRequest standardmäßig eine GET-Anforderung. Man versucht, POST-Daten, so dass ich glaube nicht, dass dies funktionieren wird.
Versuchen Sie es mit ASIFormDataRequest, die gebaut für die Buchung der Daten. Oder zumindest ändern Sie den request-Methode auf POST.