2012-08-12 20 views
1

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

这是一个比较基本的API ..

我们已经尝试这个PHP脚本卷曲张贴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。

+0

其标准的XML卷曲的Bigcommerce REST API。 – 2012-08-12 10:28:20

回答

1

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

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

应该是:

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

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

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

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

+0

Test.xml不是一个空文件,先检查一下。 启用了PHP错误日志记录,并且在错误日志中检查了错误。此外,来自代码的调试也是php display_errors。 它只需将一个.xml文件发布到bigcommerce API即可。 – Logan 2012-08-12 20:05:31