1

我们需要将 .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。

4

2 回答 2

1

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

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

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

于 2012-08-12T19:20:51.647 回答
1

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

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

本来应该:

$XPost = fread($handle, filesize($handle));
于 2014-12-11T17:30:19.500 回答