2011-01-02 5 views
2

mein Webhosting hat den ausgehenden Verkehr blockiert, so dass ich ein kostenloses Webhosting verwenden, um Daten zu lesen und auf meinem Server, aber das Problem ist, dass meine PHP-Datei Daten empfängt Die Variable $ _REQUEST kann sie jedoch nicht parsen.Verwenden Sie PHP, um JSON-Daten aus einer anderen PHP-Datei geschrieben

post.php 
    function postCon($pCon){ 
    //echo $pCon; 
    $ch = curl_init('http://localhost/rss/recv.php'); 
    curl_setopt ($ch, CURLOPT_POST, 1); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, "data=$pCon"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $d=curl_exec ($ch); 
    echo $d."<br />"; 
    curl_close ($ch); 

    } 

recv.php

<?php 
if(!json_decode($_REQUEST['data'])) 
    echo "json error"; 

echo "<pre>"; 
print_r($data); 
echo "</pre>"; 
?> 

jedes Mal json Fehler gibt. aber Echo $ _REQUEST ['Daten'] gibt die richtigen JSON-Daten. PLZ Hilfe.

+2

Auch http://php.net/manual/en/function.json-last-error.php sehen –

+0

@Pekka die genaue JSON Fehler zu erhalten: itunes rss & missformed json fehler – voldyman

Antwort

1

Sollte das nicht?

$posts = array('data'=>$pCon); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $posts); 

even the example in doc show that

von doc

Die vollständigen Daten, die in einem HTTP "POST" Betrieb zu stellen. Um eine Datei zu veröffentlichen, fügen Sie einen Dateinamen mit @ voran und verwenden Sie den vollständigen Pfad. Dies kann entweder als urlencodierte Zeichenfolge wie 'para1 = val1 & para2 = val2 & ...' oder als ein Array mit dem Feldnamen als Schlüssel und Feld Daten als Wert übergeben werden. Wenn value ein Array ist, wird der Content-Type-Header auf multipart/form-data gesetzt. Ab PHP 5.2.0 müssen Dateien, die an diese Option mit dem Präfix @ übergeben wurden, in Array-Form vorliegen, damit sie funktionieren.

Ihr bestehender Weg sollte auch funktionieren,

ist es möglich, dass einige $pCon urlencoded Werte enthält, wie =, ??

+0

ich denke beide funktionen –

0
$posts = array('data'=>$pCon); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $posts); 

dies funktionierte. (die Person, die diese Frage beantwortet löschte die Post, damit ich seinen Namen fangen konnte nicht, so thankx)

edit: gibt es noch einen kleinen Fehler jedes Anführungszeichen („) geändert wurde (\“) hatte ich eine sehr Es ist schwer, das so zu korrigieren, jetzt sende ich keine Daten in json direkt, sondern base64 kodiere es zuerst und wenn die Seite es empfängt, dekodiert es base64. jetzt workds dies einwandfrei ... thankyou alle ...

Verwandte Themen