首頁 >後端開發 >php教程 > php call .net web service?该如何解决

php call .net web service?该如何解决

WBOY
WBOY原創
2016-06-13 13:51:50962瀏覽

php call .net web service???
Hello,every body:

I have a question about PHP call .net webservice, please help me.
Why the server can not access the array value i sent?
===================================================================
Here is the SOAP 1.1 request and respond example
------------------------------------------------
POST /DMService.asmx HTTP/1.1
Host: sboserver1
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/InsertTest"



 
 
 
  string
  string
 

 

 

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length



 
 
 
  string
  string
 

 

 


======================================================
Here is the method that client code call the method 'InsertTest':
----------------------------------------------------
$soap = new soapclient($wsdl,'wsdl');  
$soap->soap_defencoding = 'UTF-8';
$soap->decode_utf8 = false;
$soap->xml_encoding = 'UTF-8';
$result = $soap->call('InsertTest',array('s' => array('0000','aaaa')),'', '', false, true,'document','encoded');
var_dump($result);

?>
Why the server can not access the array value i sent?
======================================================

 The .net webservice WSDL file is as follows:
======================================================
Hi ,this article too long,please see here ( http://sourceforge.net/community/forum/topic.php?id=827&page&replies=1) , 

thanks.

------解决方案--------------------
Are you Chinese?
If you are Chinese, please refer to http://blog.csdn.net/mynamesucks/archive/2006/05/26/756480.aspx
Otherwise, see following.
replace
$result = $soap-> call('InsertTest',array('s' => array('0000','aaaa')),'', '', false, true,'document','encoded');
to
$proxy = $soap->getProxy();
$result = $proxy-> InsertTest(array('s' => array('0000','aaaa')),'', '', false, true,'document','encoded');
------解决方案--------------------
.NET的WS有若干种编码方式,其中有一种是和PHP不兼容的。我忘记了具体是Encoded还是Literal。不过已经有人用NuSoap解决了这个问题。具体代码如果你要,我大概还是能找到的。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn