2013-08-20 211 views
0

我需要一些幫助。我不是PHP專家,但我知道我的方式,但對於我的生活,我找不到這個問題。PHP Soap客戶端密鑰錯誤

我們有一個外部數據庫(我們無法訪問的MSSQL數據庫)駐留在我們的客戶端。我們使用CRM解決方案,使用字符串爲其產品生成許可證密鑰。我們通過用C#編寫的Web服務訪問存儲過程。在我們這邊,我們有一個訪問Web服務寫入數據庫的PHP站點。

我的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 fixed。謝謝。

但問題從給我一個錯誤,只顯示一個灰色的頁面。

+0

我已經編寫了一個C#應用程序來測試Web服務,並且它可以很好地寫入表格。所以這個問題存在於代碼中。 – dwhenning

+0

現在有什麼問題。 – som

+0

好像看起來頁面不是由於錯誤而呈現的。我現在已經把error_reporting放在測試中,看看它現在是否是語法錯誤。但是真正奇怪的是,當我將「skey」設置爲「Skey」時,它發揮作用並給了我一個錯誤信息,但是現在它在修復拼寫錯誤後給我一個空白頁。 – dwhenning

回答

0

問題:

"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) 
      ); 
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 S IN錯誤的SKEY所以這可能是原因是小的。不確定。