2011-02-23 150 views
2

HI,PHP SOAP客戶端

我有這樣的XML我試圖做出SOAP客戶端參數

<?xml version="1.0" encoding="utf-8" ?> 
<RequestGenerateInvoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="XML"> 
    <Type>enAdd</Type> 
    <Invoice> 
     <InvoiceNumber>5</InvoiceNumber> 
     <InvoiceIDTxt>101</InvoiceIDTxt> 
     <AccountIDTxt>1001</AccountIDTxt> 
     <InvoiceDate>2011-02-21T15:04:42.8500736+02:00</InvoiceDate> 
     <Code>1</Code> 
     <Details>Some Details</Details> 
     <Quantity>1</Quantity> 
     <Amount>10</Amount> 
     <AmountDue>20</AmountDue> 
     <FromDate>2011-02-21T15:04:42.8490735+02:00</FromDate> 
     <ToDate>2011-02-21T15:04:42.8530738+02:00</ToDate> 
     <Months>7</Months> 
     <IsPrinted>false</IsPrinted> 
     <Paid>0</Paid> 
     <CardNumber>101</CardNumber> 
     <PrevAccBalance>100</PrevAccBalance> 
     <RealUsageAmount>80</RealUsageAmount> 
     <LocationID>0</LocationID> 
     <BatchNumber>1</BatchNumber> 
     <BatchText>Some Text</BatchText> 
    </Invoice> 
    <RequestLocationID>0</RequestLocationID> 
    <RequestDateTime>0001-01-01T00:00:00</RequestDateTime> 
</RequestGenerateInvoice> 

到目前爲止,我的腳本是:

$client = new SoapClient("https://Some.?wsdl"); 
$client->MakeInvoice(array('Type'=>'enAdd', 
          'Invoice'=> array('InvoiceNumber' => '101', 
              'InvoiceIDTxt' => '101', 
              'AccountIDTxt' => '2',......), 
          'RequestLocationID'=>'2', 
          'RequestDateTime'=>'0001-01-01T00:00:00')); 

但我始終沒有得到服務器的響應

+1

嗨。我們去了。我們無法像現在這樣讀取您的XML代碼。爲了使您的代碼格式化得很好,請將其縮進4個字符。請編輯問題以使其更具可讀性。謝謝。 (有關如何設置問題格式的更多信息,請參閱頁面上的「如何詢問」信息框) – Spudley 2011-02-23 16:00:53

+0

什麼是MakeInvoice? – Shikiryu 2011-03-08 13:55:37

回答

0

您需要內容類型:text/xml

1

嘗試使用SoapClient->_getLastRequest()SoapClient->_getLastResponse()來查看引擎蓋下發生了什麼。請注意,您需要在SoapClient構造開啓此功能:

$client = SoapClient("some.wsdl", array('trace' => 1)); 
+0

現在我收到此錯誤消息致命錯誤:未捕獲SoapFault異常:[a:InternalServiceFault]無法加載文件或程序集「Interop.DPTrEncDec,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null」或其中一個依賴。該系統找不到指定的文件。在C:\ localhost \ www \ test \ INDEX.PHP:330堆棧跟蹤:#0 [內部函數]:SoapClient - > __ call('UpdateAccountBa ...',Array)#1 C:\ localhost \ www \ test \ 330行上的C:\ localhost \ www \ test \ INDEX.PHP中的INDEX.PHP(330):SoapClient-> UpdateAccountBalance(Array)#2 {main} – Iliya 2011-03-10 17:55:37

+0

這意味着您的Soap調用正在遠程服務器上生成異常 - 您應該與該服務器的所有者交談,並從__getLastResponse()向他們提供XML。使用try/catch來捕獲錯誤並打印出XML。 – Robin 2011-03-11 19:46:55

0

我不相信這個XML是SOAP通信的一部分。沒有SOAP信封和身體?!這似乎是一個ReST API。無論如何,你應該閱讀API的文檔。

如果您只想通過PHP生成打印的XML,則可以使用DOMSimpleXML