我在bluehost服务器test.php上创建了一个文件,并使用此文件从另一台服务器(godaddy)发送curl请求。
"unable to locate element, using {:class=>"bd", :tag_name=>"input", :type=>"hidden"}"
如何捕获test.php上发布的数据并进行处理? 我正在尝试使用$ _POST,但它显示为空白。
答案 0 :(得分:2)
问题接近于How to send raw POST data with cURL? (PHP)
我稍微修改了您的客户端代码以遵循建议:
<?php
$fields = ['a' => 'aaaa', 'b' => 'bbbb'];
$url = 'http://localhost/test.php';
$data_string = json_encode($fields);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, urlencode($data_string));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$curl_response = curl_exec($curl);
echo 'Response: '.$curl_response.PHP_EOL;
我为发送的数据和设置标题urlencode
。
问题How to get body of a POST in php?解释了如何读取数据的逻辑我使用以下代码创建了一个简单的test.php
文件
<?php
$body = file_get_contents('php://input');
if (!empty($body)) {
$data = json_decode(urldecode($body), true);
var_export($data);
}
我们读取数据,解码并解析JSON。
正如人们可能期望客户端脚本的测试输出如下
$ php client.php
Response: array (
'a' => 'aaaa',
'b' => 'bbbb',
)
答案 1 :(得分:1)
尝试替换此内容,直接发送array
而非json
curl_setopt($curl, CURLOPT_POSTFIELDS,$data_string );
使用
curl_setopt($curl, CURLOPT_POSTFIELDS,$fields );