.xml文件自动发布到 REST API


Post .xml file automatically to REST API

我们需要将.xml文件发布到 API - REST API - BigCommerce。

这是一个相对基本的API。

我们已经尝试了这个php curl脚本将xml文件发布到API,但是没有运气。

<?php
// test XML API POST
$filename = "test.xml"; 
$handle = fopen($filename, "r"); 
$XPost = fread($handle, filesize($filename));
fclose($handle);
$url = "https://urlofapi"; // set REST URL 
$api_token = "apihashkey";
$xml = urlencode($XPost);
$user_agent = "SoEasy REST API Client 0.1";
// Get the curl session object 
$session = curl_init($url);
// set url to post to curl_setopt($session, CURLOPT_URL,$url); 
curl_setopt($session, CURLOPT_POST, true); // Tell curl to use HTTP POST; 
curl_setopt($session, CURLOPT_POSTFIELDS, $XPost); // Tell curl that this is the body of the POST 
curl_setopt($session, CURLOPT_USERPWD, $api_token); // define userpassword api token
curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_ANY); // defining REST basic authentication 
curl_setopt($session, CURLOPT_HTTPHEADER, Array("Content-Type: application/xml")); // define header 
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false); // ignore ssl cert for debug purposes curl_setopt($session, CURLOPT_USERAGENT, $user_agent); // user agent so the api knows what for some unknown reason 
curl_setopt($session, CURLOPT_HEADER, 1); // Tell curl not to return headers, but do return the response 
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); // allow redirects curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($session);
print_r($response);
curl_close($session);
?>

到目前为止,这已经连接,但尚未成功 - 发生错误 -

Warning: fread() [function.fread]: Length parameter must be greater than 0 in /home/user/public_html/test/new.php on line 7
HTTP/1.1 405 Method Not Allowed Date: Sun, 12 Aug 2012 07:31:11 GMT 
Server: Apache Allow: GET, HEAD, OPTIONS
X-BC-ApiLimit-Remaining: 5000 X-BC-Store-Version: 7.3.37 
X-Powered-By: PleskLin Transfer-Encoding: chunked Content-Type: application/xml 
X-Pad: avoid browser bug 405 This resource does not support the requested method.
 Refer to the Allow response header for methods supported by this resource.

我们需要做的就是将.xml文件发布到大型商务 API。.xml来自帐户软件并生成正确的 xml。

我知道

这是一个较旧的帖子 - 问题是 OP 在检查其长度时引用了文件名,而不是文件处理程序,因此每次都得到 0。

$XPost = fread($handle, filesize($filename));

应该是:

$XPost = fread($handle, filesize($handle));

文件test.xml长度为零或(可能更多情况)不存在。

您需要启用 PHP 错误日志记录,然后跟踪错误日志以了解您案例中的此类问题或进行实际的错误检查。

此外,您正在向不支持它的服务器终结点发送 POST 请求。您需要了解 HTTP 协议基础知识,以正确理解给定的错误消息以及提供的调试信息。