0

我需要一些帮助。我不是 PHP 专家,但我知道我的方法,但对于我的生活,我找不到这个问题。

我们有一个外部数据库(我们无权访问的 MSSQL 数据库)驻留在我们的客户端。我们使用 CRM 解决方案,该解决方案使用字符串为其产品生成许可证密钥。我们通过用 C# 编写的 Web 服务访问存储过程。在我们这边,我们有一个 PHP 站点,它访问 Web 服务以写入数据库。

我的 PHP 代码如下所示:

$skey = "FDGK:LKss#()#84$$$";
$productID = 5;
$data = "D359;00011,P,D359ZZ,SQKGLTKQKQYZHRA,ALNR,009350,20140228,005392;DEWALDH;D359;0";

try
{
    $wsdl = "http://connectedservices.sagesouthafrica.co.za/serv/communicate.asmx?wsdl";        
    $client = new SoapClient($wsdl);
    $result = $client->__soapCall("InsertSerialAuthProduct", array("InsertSerialAuthProduct" => array("Skey"=>$skey,"ProductID" => $productID ,"Data"=>$data))); 
} catch (SoapFault $E)
{
    echo $E->faultstring;
}

出于某种原因,每次我尝试生成产品代码时,都会出现错误:

Server was unable to process request. ---> Key Error. 

php 的版本是 5.2(我正忙着将整个东西重写到 asp.net,但我在 8 月底有时间限制)

任何帮助将不胜感激。

编辑 “skey”=>$skey 已修复。谢谢。

但是问题从给我一个错误到只显示一个灰色页面。

4

2 回答 2

1

问题 :

"Skey"=>$skey,应该"skey"=>$skey,

$client->__soapCall("InsertSerialAuthProduct", array(
                    "InsertSerialAuthProduct" => array(
                             "skey"=>$skey, // Not Skey
                             "ProductID" => $productID ,
                             "Data"=>$data)
                            )
                    );

你可以这样调用:

$wsdl = "http://connectedservices.sagesouthafrica.co.za/serv/communicate.asmx?wsdl";
$client = new SoapClient($wsdl);
$result = $client->InsertSerialAuthProduct(array(
                          "skey"=>$skey,
                          "ProductID" => $productID ,
                          "Data"=>$data)
              );
于 2013-08-20T07:14:40.630 回答
0

我只是打开您提供的 WSDL 链接,然后根据我看到的内容更改行

$result = $client->__soapCall("InsertSerialAuthProduct", array("InsertSerialAuthProduct" => array("Skey"=>$skey,"ProductID" => $productID ,"Data"=>$data))); 

$result = $client->__soapCall("InsertSerialAuthProduct", array("InsertSerialAuthProduct" => array("skey"=>$skey,"ProductID" => $productID ,"Data"=>$data))); 

正如我在 WSDL 中看到的,skey 很小,所以这可能是错误的原因。不过不确定。

于 2013-08-20T07:14:55.883 回答