0

我在 server.pad.com/authenticate (本地)有一个 RESTful 服务器,它接受一个参数并返回 JSON。所以在 Laravel 中authenticate/(:any)

我正在尝试从 ajax 请求中获取数据并将其发送到服务器并发回响应。这是我尝试过的...

<?php

  $json = json_decode($_POST['data'], true);
  $url = 'http://service.pad.com/authenticate';
  $curl = curl_init($url);
  $data = json_encode($json);

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

  $response = curl_exec($curl);
  curl_close($curl);

  echo json_encode($response);
 ?>
4

1 回答 1

0

应该是Content-Type: application/x-www-form-urlencoded问题。
$data在 JSON 中。您使用 CURLOPT_POSTFIELDS 设置值,但不是 var。
如我所见, $_POST['data'] 是 JSON 格式。如果服务器在 JSON 中
变得单一,请尝试以下操作:data

$url = 'http://service.pad.com/authenticate';
$curl = curl_init($url);
$postdata = array( 'data' => $_POST['data'] );

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postdata) );

$response = curl_exec($curl);
curl_close($curl);

echo json_encode($response);

但是,如果服务器获取多个变量,而不是 JSON,请尝试以下操作:

$url = 'http://service.pad.com/authenticate';
$curl = curl_init($url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, 
                   http_build_query( json_decode($_POST['data'], true) ) 
           );

$response = curl_exec($curl);
curl_close($curl);

echo json_encode($response);
于 2013-04-19T09:48:03.153 回答