2

我正在尝试将 HTTP POST JSON 编码数据发送到远程服务器。

使用 cURL,这将作为

curl -X POST -H "Content-Type: application/json" -d '{"name":"Jeff"}' http://somesite/someuri

我找不到这样做的 Laravel 方法。

[ * * * 更新:我的解决方案 * * * ]

我最终使用了 PHP 的 HttpRequest

$httpRequest_OBJ = new httpRequest($server, HTTP_METH_POST, NULL);
$httpRequest_OBJ->setBody($jsonEncodedData);
$httpRequest_OBJ->setContentType('application/json');
$result = $httpRequest_OBJ->send();
$reply = $result->getBody();
4

2 回答 2

2

这篇 SO 帖子中,我回答了一个非常相似的问题,它是您问题的直接解决方案,请点击链接获取详细说明。

如何通过 CURL (jyggen/curl) 在 Laravel 4 中通过 POST 发送 JSON
简而言之,在你使用 composer 在你的 laravel 应用程序中安装jyggen/curl 包之后,你所要做的就是:

use jyggen\Curl;
$url = "http://some.url/"; //the gateway to which you want to post the json payload
$file = 'path/to/file.json';
$data = File::get($file); //or wherever else you get your json from

$request = new Request($url); // jyggen\Curl\Request

$request->setOption(CURLOPT_FOLLOWLOCATION, true);
$request->setOption(CURLOPT_RETURNTRANSFER, true);

$request->setOption(CURLOPT_POST, true);
$request->setOption(CURLOPT_POSTFIELDS, $data);

$request->setOption(CURLOPT_HTTPHEADER, array(                                                                          
'Content-Type: application/json',
);

$request->execute();

if ($request->isSuccessful()) {
    return $request->getRawResponse();
} else {
    throw new Exception($resquest->getErrorMessage());
} 
于 2013-08-08T22:23:12.893 回答
0

以上@Gadoma 示例在 Laravel 5 中也非常有效。但我不得不改变使用:

use Jyggen\Curl\Request;   

删除行:

$request->setOption(CURLOPT_RETURNTRANSFER, true);

因为有一些错误。现在它就像魅力一样。

于 2015-05-22T21:23:16.810 回答