2012-08-12 2 views
1

.xml 파일을 API - REST API - BigCommerce에 게시해야합니다. 우리는 그러나 API 행운의 XML 파일을 게시이 PHP 컬 스크립트를 시도.xml 파일을 REST API에 자동으로 게시하십시오.

그것은 상대적으로 기본적인 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. 

우리가 필요로하는 것은 간단하지가 큰 상거래 API에 .xml 파일을 게시 할 것입니다 수 있습니다. .xml은 계정 소프트웨어에서 가져오고 올바른 XML을 생성합니다.

+0

그것의 표준 XML 컬 Bigcommerce REST API를. –

답변

1

이전 게시물 인 것을 알고 있습니다. 문제는 OP가 파일 핸들러가 아니라 파일 이름을 참조하여 길이를 확인할 때마다 매번 0이 발생한다는 것입니다.

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

이 있었어야 :

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

파일 test.xml은 길이가 없거나 더 많은 경우가 존재할 수 있습니다.

PHP 오류 로깅을 활성화 한 다음 오류 로그를 추적하여 해당 문제에 대해 알거나 실제 오류 검사를 수행해야합니다.

또한 POST 요청을 지원하지 않는 서버 끝점으로 보내고 있습니다. 제공된 오류 정보는 물론 제공된 디버그 정보를 제대로 이해하려면 HTTP 프로토콜 기본 사항을 알아야합니다.

+0

Test.xml은 빈 파일이 아니며 확인되었습니다. PHP 오류 로깅을 사용하고 error_log에서 오류를 검사합니다. 또한 코드에서 나온 디버그는 PHP display_errors입니다. bigcommerce API에 .xml 파일을 게시하기 만하면됩니다. – Logan

관련 문제