2012-08-12 45 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