использовать php для разбора json-данных, отправленных из другого php-файла - PullRequest
2 голосов
/ 02 января 2011

мой веб-хостинг заблокировал исходящий трафик, поэтому я использую бесплатный веб-хостинг для чтения данных и отправки их на свой сервер, но проблема в том, что мой php-файл получает данные в переменной $ _REQUEST, но не может их проанализировать .

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

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

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

каждый раз, когда выдает ошибку JSON. но echo $ _REQUEST ['data'] выдает правильные данные json. Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 02 января 2011

Разве не так?

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

даже пример в doc показывает, что

из doc

Полные данные длясообщение в операции HTTP "POST".Чтобы опубликовать файл, добавьте @ к имени файла и используйте полный путь.Это может быть либо передано в виде urlencoded строки , например, 'para1 = val1¶2 = val2 & ...', либо в виде массива с именем поля в качестве ключа и данными поля в качестве значения.Если значение является массивом, заголовок Content-Type будет установлен в multipart / form-data.Начиная с PHP 5.2.0, файлы, которые передаются в эту опцию с префиксом @, должны работать в виде массива.

ваш существующий путь тоже должен работать,

возможно ли эточто $pCon содержит некоторые urlencoded значения, такие как =, ??

0 голосов
/ 02 января 2011
$posts = array('data'=>$pCon);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $posts);

это сработало.(человек, который ответил на этот вопрос, удалил сообщение, поэтому я не смог поймать его имя, поэтому спасибо)

edit: все еще была небольшая ошибка, каждая цитата (") была изменена на (\"), у меня было оченьТрудно исправить это, так что теперь я не посылаю данные непосредственно в json, но сначала base64 кодирует их, и когда страница получает их, она base64 декодирует их.теперь это работает безупречно ... спасибо всем ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...