【问题标题】:php cURL doesnt print out anythingphp cURL 不打印任何内容
【发布时间】:2017-11-10 08:47:09
【问题描述】:

我正在尝试使用 cURL 发送 HTML 表单 POST 数据,但似乎响应始终为空。我首先将所有 POST 数据保存在一个数组中,然后使用 implode 函数。当我回显出内爆字符串时,它确实返回了值,但在 cURL 之后它只是空的。

这是设置。我在提交表单后调用这个函数

$this->OCIcURL($this->request->post);

public function OCIcURL($post) {
    $data_oci = array();
    $items_oci = array();     

    $counter = 0;
    $data_oci['~caller'] = 'CTLG';
    foreach ($post['item'] as $key => $value)
    {
        $counter++;
        $data_oci['NEW_ITEM-DESCRIPTION[' . $counter . ']']         = $value;
        $data_oci['NEW_ITEM-MATNR[' . $counter . ']']               = "";
        $data_oci['NEW_ITEM-QUANTITY[' . $counter . ']']            = $post['amount'][$counter];
        $data_oci['NEW_ITEM-UNIT[' . $counter . ']']                = "";
        $data_oci['NEW_ITEM-PRICE[' . $counter . ']']               = $post['price'][$counter];
        $data_oci['NEW_ITEM-CURRENCY[' . $counter . ']']            = $this->session->data['currency'];
        $data_oci['NEW_ITEM-PRICEUNIT[' . $counter . ']']           = 1;
        $data_oci['NEW_ITEM-LEADTIME[' . $counter . ']']            = "";
        $data_oci['NEW_ITEM-VENDOR[' . $counter . ']']              = "";
        $data_oci['NEW_ITEM-VENDORMAT[' . $counter . ']']           = "";
        $data_oci['NEW_ITEM-MANUFACTCODE[' . $counter . ']']        = "";
        $data_oci['NEW_ITEM-MANUFACTMAT[' . $counter . ']']         = "";
        $data_oci['NEW_ITEM-MATGROUP[' . $counter . ']']            = "";
        $data_oci['NEW_ITEM-SERVICE[' . $counter . ']']             = "";
        $data_oci['NEW_ITEM-CONTRACT[' . $counter . ']']            = "";
        $data_oci['NEW_ITEM-CONTRACT_ITEM[' . $counter . ']']       = "";
        $data_oci['NEW_ITEM-EXT_QUOTE_ID[' . $counter . ']']        = "";
        $data_oci['NEW_ITEM-EXT_QUOTE_ITEM[' . $counter . ']']      = "";
        $data_oci['NEW_ITEM-EXT_PRODUCT_ID[' . $counter . ']']      = "";
        $data_oci['NEW_ITEM-ATTACHMENT[' . $counter . ']']          = "";
        $data_oci['NEW_ITEM-ATTACHMENT_TITLE[' . $counter . ']']    = "";
        $data_oci['NEW_ITEM-ATTACHMENT_PURPOSE[' . $counter . ']']  = "";
        $data_oci['NEW_ITEM-EXT_SCHEMA_TYPE[' . $counter . ']']     = "";
        $data_oci['NEW_ITEM-EXT_CATEGORY_ID[' . $counter . ']']     = "";
        $data_oci['NEW_ITEM-CUST_FIELD1[' . $counter . ']']         = 21;
        $data_oci['NEW_ITEM-PARENT_ID[' . $counter . ']']           = "";
        $data_oci['NEW_ITEM-ITEM_TYPE[' . $counter . ']']           = "";
    }

    foreach ($data_oci as $key => $value) 
    {
        $items_oci[] = $key . '=' . $value;
    }
    $string_oci = implode('&', $items_oci);

如果我回显$string_oci,我会得到一个结果。在此之后,我使用 cURL 将字符串发送到链接。

    $url = "http://localhost/test.php";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $string_oci);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);  // RETURN THE CONTENTS OF THE CALL
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $response = curl_exec($ch);
    var_dump($response);
}

var_dump 始终为空,返回 string(0) ""。我也在现场网站上试过这个,结果一样。

我使用这段代码查看了任何错误,但似乎根本没有任何错误,但var_dump始终为空。

    if (curl_exec($ch) === FALSE) 
    {
        print_r(curl_getinfo($ch));
        die("Curl error: " . curl_error($ch));
    }
    else
    {   
        curl_close($ch);
    }

【问题讨论】:

  • 如果将implode('&', $items_oci) 更改为http_build_query($data_oci) 会怎样?并向我们​​展示test.php 文件
  • @Bart 仍然没有回应
  • 你能提供一个 $string_oci 的小样本吗?只需 var_dump 并将其发送到这里。
  • NEW_ITEM-DESCRIPTION[1]=test&NEW_ITEM-QUANTITY[1]=20@pr1nc3

标签: php curl post


【解决方案1】:
$endpoint="http://localhost/test3.php";
$session = curl_init($endpoint);
curl_setopt($session, CURLOPT_POST, true);
curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($session, CURLOPT_POSTFIELDS, $string_oci);

curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($session);
var_dump($response);
curl_close($session);

您的 curl 请求中需要一个标头,而您的 curl_init 需要一个 url。试试我附上的代码。

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 2021-02-13
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多