Ich habe ein Array $batchRequest
die wie folgt aussieht:Wie man ein Array komplexer Objekte an eine andere Seite in PHP sendet?
array(5) {
[0]=>
array(0) {
}
[1]=>
object(Facebook\FacebookRequest)#18 (9) {
["app":protected]=>
object(Facebook\FacebookApp)#9 (2) {
["id":protected]=>
string(16) "xxxxxxx"
["secret":protected]=>
string(32) "xxxxxxxx"
}
["accessToken":protected]=>
string(49) "xxxxx|xxxxxxx"
["method":protected]=>
string(3) "GET"
["endpoint":protected]=>
string(75) "/10209064245580796?fields=id%2Cname%2Cpicture%2Cgender%2Cfriends%2Cbirthday"
["headers":protected]=>
array(0) {
}
["params":protected]=>
array(0) {
}
["files":protected]=>
array(0) {
}
["eTag":protected]=>
NULL
["graphVersion":protected]=>
string(4) "v2.5"
}
[2]=>
object(Facebook\FacebookRequest)#17 (9) {
["app":protected]=>
object(Facebook\FacebookApp)#9 (2) {
["id":protected]=>
string(16) "xxxxx"
["secret":protected]=>
string(32) "xxxxxxx"
}
["accessToken":protected]=>
string(49) "xxxx|xxxxxxxx"
["method":protected]=>
string(3) "GET"
["endpoint":protected]=>
string(75) "/10208823390691752?fields=id%2Cname%2Cpicture%2Cgender%2Cfriends%2Cbirthday"
["headers":protected]=>
array(0) {
}
["params":protected]=>
array(0) {
}
["files":protected]=>
array(0) {
}
["eTag":protected]=>
NULL
["graphVersion":protected]=>
string(4) "v2.5"
}
[3]=>
object(Facebook\FacebookRequest)#19 (9) {
["app":protected]=>
object(Facebook\FacebookApp)#9 (2) {
["id":protected]=>
string(16) "xxxxx"
["secret":protected]=>
string(32) "xxxxxxx"
}
["accessToken":protected]=>
string(49) "xxxxx|xxxxxxx"
["method":protected]=>
string(3) "GET"
["endpoint":protected]=>
string(74) "/1294280923934896?fields=id%2Cname%2Cpicture%2Cgender%2Cfriends%2Cbirthday"
["headers":protected]=>
array(0) {
}
["params":protected]=>
array(0) {
}
["files":protected]=>
array(0) {
}
["eTag":protected]=>
NULL
["graphVersion":protected]=>
string(4) "v2.5"
}
[4]=>
object(Facebook\FacebookRequest)#20 (9) {
["app":protected]=>
object(Facebook\FacebookApp)#9 (2) {
["id":protected]=>
string(16) "xxxxx"
["secret":protected]=>
string(32) "xxxxxxxx"
}
["accessToken":protected]=>
string(49) "xxxxx|xxxxxxxxxx"
["method":protected]=>
string(3) "GET"
["endpoint":protected]=>
string(74) "/1274474365912572?fields=id%2Cname%2Cpicture%2Cgender%2Cfriends%2Cbirthday"
["headers":protected]=>
array(0) {
}
["params":protected]=>
array(0) {
}
["files":protected]=>
array(0) {
}
["eTag":protected]=>
NULL
["graphVersion":protected]=>
string(4) "v2.5"
}
}
So ist es ein Array, dessen Elemente komplexe Objekte. Ich muss sie an eine andere Seite senden, die parallelImport.php
genannt wird. Hier ist, was ich versucht habe:
JSON Mit
$data = array('batchArrayChild' => json_encode($batchRequest), 'app_id' => $appId, 'app_secret' => $appSecret);
$endpoint_url = 'https://some-domain.net/pages/parallelImport.php';
$curl = curl_init($endpoint_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
$curl_response = curl_exec($curl);
$result = $curl_response;
print_r($result);
Wie man sehen kann ich json_encode
ed $batchRequest
und senden sie über cURL
, und hier ist, was es gibt:
string(16) "[[],{},{},{},{}]"
Mit http_build_query
$data = array('batchArrayChild' => http_build_query($batchRequest), 'app_id' => $appId, 'app_secret' => $appSecret);
$endpoint_url = 'https://some-domain.net/pages/parallelImport.php';
$curl = curl_init($endpoint_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
$curl_response = curl_exec($curl);
$result = $curl_response;
print_r($result);
Und nachdem ich var_dump($_POST['batchArrayChild'])
auf parallelImport.php tun, sagt es:
string(0) ""
Haben Sie irgendeine andere Art und Weise kennen, in dem ich dieses Array zu Ausführungsskript schicken könnte und eine Art von Antwort zu bekommen?
auf den ersten Blick in Ordnung aussieht, so bezweifle ich, das Senden der Ausgabe ist. Vielleicht möchten Sie den Netzwerkverkehr einmal dumpen, um zu überprüfen, ob Sie tatsächlich eine POST-Anfrage mit dem erwarteten Inhalt senden. Es ist wahrscheinlich, dass das Ergebnis unerwartet ist, da dieses Remote-Skript die Struktur der von Ihnen gesendeten Daten nicht versteht. Darüber können wir natürlich nichts sagen. – arkascha
Ich habe im txt-Dokument den vollständigen '$ _POST' protokolliert und dieses Feld 'batchArrayChild' ist immer noch leer. – Ognj3n
Wie hast du das gemacht? "In ein TXT-Dokument einzuloggen" klingt sehr verdächtig ... Dann wollen Sie vielleicht zuerst prüfen, ob '$ data' tatsächlich gültige' JSON'-Daten enthält? – arkascha