【问题标题】:Submitting with PHP and Curl使用 PHP 和 Curl 提交
【发布时间】:2017-09-22 09:55:32
【问题描述】:

我整个上午都在尝试通过 API 上传 XML 字符串,以便它提交我的订单,但无论我尝试什么,它都对我不起作用。

我的网址:

$url = "http://example.com/SubmitOrder?apiKey=ABC123&clientID=MYId&orderXml=".$xml;

$xml 是我的 xml 详细信息已经预先格式化。

然后我把它放到我的 curl 部分:

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_URL            => $url
));
$resp = curl_exec($curl);

$xml1=simplexml_load_string($resp) or die("Error: Cannot create object");

print_r($xml1);
echo "Submitted";

我得到的响应是“错误:无法创建对象”,我可以看到我的详细信息尚未提交。

我哪里错了??

非常感谢。

【问题讨论】:

  • 您是否考虑添加一个临时的简单调试行来查看您的请求实际返回了什么?在您的curl_exec() 通话后var_dump($resp);
  • 是的,我在里面有这个,但回来时是空白的。进一步探索这一点,它归结为 URL 和 API 密钥的编码。 API 密钥中有一个特殊字符在发送时未正确编码,因此无法进行身份验证。简单的事情!!!感谢大家的帮助!

标签: php xml curl


【解决方案1】:

您可以在此代码示例中检查您的响应数据并创建数据。

<?php
$url = 'https://www.w3schools.com/xml/note.xml';

$resp = file_get_contents($url);

if (resp) {
    $string = simplexml_load_string($resp);
    var_dump($movies);
}

但是如果你想在 curl 方法中获取数据,试试这个。

<?php

$html_brand = 'https://www.w3schools.com/xml/note.xml';
$ch = curl_init();

$options = array(
    CURLOPT_URL            => $html_brand,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER         => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_ENCODING       => "",
    CURLOPT_AUTOREFERER    => true,
    CURLOPT_CONNECTTIMEOUT => 120,
    CURLOPT_TIMEOUT        => 120,
    CURLOPT_MAXREDIRS      => 10,
);
curl_setopt_array( $ch, $options );
$response = curl_exec($ch);
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
    case 200:  # OK
        break;
    default:
        echo 'Status code HTTP: ', $http_code, "\n";
}

var_dump($response);
curl_close($ch);
die();

检查您的数据。并检查您的响应状态代码。

【讨论】:

    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    相关资源
    最近更新 更多