试图使用Curl发布

时间:2017-04-19 16:17:19

标签: php json curl

我过去没有多少使用过Curl而且有点困惑。

我正在尝试抓取表单中的信息并发布到我CURLOPT_URL中设置的网址。

我可以使用以下

让基本的Json在邮递员中发帖
{
  "type":"bio",
  "title":"new test5"
}

但是当我尝试添加我的html表单中的数据时,它不起作用,我想我有点不对劲有人纠正我并让我知道我做错了什么,谢谢。

完整代码

   <form method = 'POST'>
        <div class="">
            <label><b>Title</b></label>
            <input type="text" placeholder="Enter Title" name="titletext" required>
            <button type="submit">Send</button>
        </div>
    </form>
<?php

$curl = curl_init();

if(isset($_POST['titletext']))
curl_setopt_array($curl, array(
    CURLOPT_URL => "http://localhost/communicator-app/bensapi/node/",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => array
    (
        'type' => 'bio',
        'title' => $_POST['titletext']
    ),

    CURLOPT_COOKIE => file_get_contents( 'session_cookie.txt' ),
    CURLOPT_HTTPHEADER => array(
        "content-type: application/json"
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo "POSTED !";
}

1 个答案:

答案 0 :(得分:0)

这可能对您有用,因为使用您的代码在我身边工作 index.php与您的表单

//Your form
<?php 
if(isset($_POST['titletext'])){
    $ch = curl_init();
    $data_json = json_encode(array
    (
        'type' => 'bio',
        'title' => $_POST['titletext']
    ));
    curl_setopt($ch, CURLOPT_URL, "http://localhost/test/second.php");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_COOKIE, "your cookie");

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

    print_r($response);
}

<强> second.php

<?php
print_r(file_get_contents("php://input"));
?>

我使用curl将您的表单提交到此second.php,并获得print_r($response);的输出 {"type":"bio","title":"dsfgdfsgv"}