设为首页 收藏本站
查看: 933|回复: 0

[经验分享] PHP与.NET的通信 [转]

[复制链接]

尚未签到

发表于 2017-4-2 10:24:45 | 显示全部楼层 |阅读模式
近几天接到一个项目,要用的C#与PHP程序的通信,然后一直在想怎么实现这个功能。后来和朋友们一起讨论说他原来做过一个java和PHP通信的案例,然后就想到PHP与NET肯定也行得通的。当时他就使用的WebServices技术。

  然后马上就新建了一个c#的WebServices工程,然后最初写了一个很简单的案例:

  [WebMethod]

  public string HelloWorld()

  {

  return "Hello World";

  }

  就返回一个字符串格式的东西。然后去查阅PHP手册找到了soapClient这个函数,参数是WebServices工程的地址,$client=new SoapClient("http://192.168.10.208/HY_SIMS/HY_SIMS.asmx?WSDL");

  $h=$client->HelloWorld(); 这样h就接收到WebService中helloworld方法的返回值。 print_r($h);打印$h的结构得到的是这样的一个结构 stdClass Object ( [HelloWorldResult] => Hello World ) 分析这个结构,

  foreach ($h as $key=>$val)

  {

  echo $val;

  }

  这样就能得到其中 Hello World 这个字符串。

  很兴奋 哈,成功了,能够确信接收到.net程序的返回值。

  接下来实验接收返回的dataset数组,(因为WebService 只能返回dataset类型)

  $result=$client->ds();同样接收过来 print_r($result); 打印格式

  stdClass Object ( [dsResult] => stdClass Object ( [schema] => [any] => 1 2 3 ) )

  发现格式变了,变成这样的了,和上边字符串的格式有点不一样。然后试着同样用上边的方法解析出来。没成功。

  后来偶尔在网上看到这样的格式$videos=$result->getVideoListReturn->videos->contentId

  想到自己的这个对象类型也可以这样

  $n=$result->dsResult;

  将拿到的结果集找到下一层中的另外一个对象

  print_r($n);

  打印对象的格式

  echo "<br />";

  foreach ($n as $key=>$val)

  {

  echo $val;

  }

  尝试拆分获得结果 成功。

  然后思考,如果返回的在深一层,也就是外边在套一个,也可以同样解析出想要的结果。

  虽然今天语言组织的不怎样,呵呵,但这是加班好长时间的结果了2个小时,我一直在弄这个东西,就在找到下一层中困扰了一个多小时。其他的其实很简单的。

  希望这个能给大家带来帮助。下班吃饭去,然后休息了。

  嗯,回来接着写点:

  来接着分析怎么得到数据库中的数据,通过以上的分析得出

  stdClass Object ( [schema] => [any] => 1yang2long ) 一个这样的类类型的东西,那么我们查看页面源代码发现是一个XML的字符串

  stdClass Object

  (

  [schema] => <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="aa"><xs:complexType><xs:sequence><xs:element name="aid" type="xs:int" minOccurs="0"/><xs:element name="aname" type="xs:string" minOccurs="0"/></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema>

  [any] => <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><NewDataSet xmlns=""><aa diffgr:id="aa1" msdata:rowOrder="0"><aid>1</aid><aname>yang</aname></aa><aa diffgr:id="aa2" msdata:rowOrder="1"><aid>2</aid><aname>long</aname></aa></NewDataSet></diffgr:diffgram>

  )

  ,simplexml_load_string();这个方法是PHP中加载XML格式的字符串,我们将上边这段字符串加载$c=$result->dsResult->any;

  $xml=simplexml_load_string($c);

  var_dump($xml);

  然后看看我们得到了什么:查看页面源代码

  object(SimpleXMLElement)#4 (1) {

  ["NewDataSet"]=>

  object(SimpleXMLElement)#5 (1) {

  ["aa"]=>

  array(2) {

  [0]=>

  object(SimpleXMLElement)#6 (2) {

  ["aid"]=>

  string(1) "1"

  ["aname"]=>

  string(4) "yang"

  }

  [1]=>

  object(SimpleXMLElement)#7 (2) {

  ["aid"]=>

  string(1) "2"

  ["aname"]=>

  string(4) "long"

  }

  }

  }

  }

  很规则的一段代码。然后我去查了手册

  $x=$xml->NewDataSet->aa;

  foreach($x as $key)

  {

  echo $key->aid."<br />";

  echo $key->aname."<br />";

  }

  这样就能遍历里边所有节点的数据了。同时我也得到了我想要的数据。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-358999-1-1.html 上篇帖子: ajax 与 php 简单聊天室 下篇帖子: php 解析html的工具 嵌入式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表