2011-02-23 151 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