最近由于一些需求需要用PHP来调用.net 写的web service,在尝试很多很多办法后都没有成功。这也是 发本文的原因,希望大家以后可以少走冤枉路!
不废话。。。。。。。。。。。。。
============.net web service 代码如下===================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Web.Script.Serialization;
using System.Data.SqlClient;
namespace WebApplication1
{
/// <summary>
/// WebTest 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebTest : System.Web.Services.WebService
{
[WebMethod]
public string HelloWord()
{
return "Helloword";
}
}
}
以上web service 只是返回一个Hello word的一个字符串。。
==========PHP代码如下============
<?php
$client = new SoapClient("http://localhost:1653/WebTest.asmx?wsdl");
$p = $client->HelloWorld();
$array = get_object_vars($p);
$t=$array['HelloWorldResult']);
echo $t;//输出web service返回的字符串“Helloword”
?>
http://localhost:1653/WebTest.asmx?wsdl是web service的地址。肯定有人问"?wsdl"是什么意思,wsdl是web service的描述语言,是一种接口定义语言,用于描述Web Service的接口信息,同时也是必须加的。
使用SoapClient前提是你的PHP文件中没有注释php_soap.dll,如果注释请将前面的分号去掉就OK了。。
出现问题及解决问题:用print_r();打印出具体问题!!
最后望大家不喜勿喷!!!