0

这是 Volusion 支持 ProductSync 提供的方法,但我想用 PHP 实现 C# 中的代码,但我不知道如何实现它。

https://support.volusion.com/hc/en-us/articles/209637767-API-Integration-ProductSync-Developer-

所以任何人都可以帮助我如何在 PHP 中实现,因为我正在研究 PHP,我不了解 C#。我只是将此代码复制粘贴到我的 PHP 中,它给了我这样的错误

致命错误:在第 5 行的 /home/tlztech/public_html/volusion/productSync.php 中找不到类“XMLHTTP”。

我的代码如下。

<?php

$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&API_Name=Generic\\Products&SELECT_Columns=p.ProductCode,p.ProductID,p.ProductName,p.StockStatus";

$xml_http = new XMLHTTP();
$xml_http.open("POST", $api_url, false, "", "");
$xml_http.send(null);
$api_response = $xml_http.responseText;



$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&Import=Update";
$api_request = "";
$api_request = $api_request + "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
$api_request = $api_request + "<xmldata>";
$api_request = $api_request + "   <Products>";
$api_request = $api_request + "       <ProductCode>0001</ProductCode>";
$api_request = $api_request + "       <StockStatus>5</StockStatus>";
$api_request = $api_request + "   </Products>";
$api_request = $api_request + "</xmldata>";

$xml_http = new XMLHTTP();
$xml_http.open("POST", $api_url, false, "", "");
$xml_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
$xml_http.setRequestHeader("Content-Action", "Volusion_API");
$xml_http.send(api_request);
$xml_http = $xml_http.responseText;

$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&API_Name=Generic\\Products&SELECT_Columns=p.ProductCode,p.ProductID,p.ProductName,p.StockStatus&WHERE_Column=p.ProductCode&WHERE_Value=0002";

$xml_http = new XMLHTTP();
$xml_http.open("POST", $api_url, false, "", "");
$xml_http.send(null);
$api_response = $xml_http.responseText;


?>

4

2 回答 2

1

您正在尝试引用 PHP 中不存在的 Microsoft 类。

我在您最近的其他线程中看到您尝试使用 cURL 调用 Volusion API。这是我在 PHP 中使用的有效方法。无需将 C# 示例改编为 PHP。

这是使用 cURL 和您的 URL 示例的 PHP 中的有效示例:

$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&Import=Update";

$api_request = '<?xml version="1.0" encoding="utf-8" ?>';
$api_request .= '<xmldata>';
$api_request .= '   <Products>';
$api_request .= '       <ProductCode>0001</ProductCode>';
$api_request .= '       <StockStatus>5</StockStatus>';
$api_request .= '   </Products>';
$api_request .= '</xmldata>';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $api_request); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:application/x-www-form-urlencoded; charset=utf-8", "Content-Action:Volusion_API"));

$head = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch); 
于 2016-10-26T13:04:53.217 回答
0

我认为这是因为您需要使用 XMLHTTP 类的命名空间:

$xml_http = new Your\Namespace\XMLHTTP();

因为您的文件中没有 XMLHTTP 类。这就是为什么找不到

然后,如果您只想使用XMLHTTP(),则需要在文件开头添加一个使用:

use <NAMESPACE>;

如果这个类来自全局命名空间,就这样做: $xml_http = new \XMLHTTP();

于 2016-10-26T08:06:23.813 回答