一、准备工作

1、安装wampserver:过程略

2、配置wampserver:

2.1打开php.ini文件,去掉 ;extension=php_soap.dll 这里那个分号。

也有说把这个 ;extension=php_openssl.dll前面的分号也去掉的。

2.2 如上图,将php_soap打上√。

2.3 如上图,打开httpd.conf文件,找到Listen 80 ,将80端口改成一个较大的端口,如8000。因为80端口也能别的程序用着。

在这个directory里面有php页面。Index.php就是默认的页面。在浏览器里输入  http://localhost:8000/   会进入默认的首页

二、建立WCF服务

可以直接在Web项目里,右键—添加---新建项---wcf服务,会生成如下两个文件。

在这两个文件中进行测试。上面这样操作省了配置,还有启动服务。只有运行Web项目,服务就起来了。

注意事项:接口和实现类里面对应方法的参数名要一致。

如下, 参数id名要一样。Article是一个文章类

在IService1.cs中:

[OperationContract]

Article GetArticle(string id);

在Service1.svc中:

Public  Article GetArticle(string id)

{

//do something

}

三、PHP调用WCF中的方法

Php可以调用的C#方法格式(已测试):

下面是c#方法格式

Public  string   Fun();

Public  string   Fun(string  str) ;  //这个只测过传string和int类型,参数数量可以多个。

Public  Article  GetArticle(string id);

Publis  String[]   GetStrs();

Public  List<Article>   GetArticleList(string  flag);

Public  void  AddArticle(Article  art);

再次强调,参数名要和对应接口里的参数名一致。

--------------------------------------------------------------------------------------------------------------------

Php调用:

【Public  void  AddArticle(Article  art)】

说明:下面的服务地址,可以在Service1.svc文件上右键—浏览器查看

<?php

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$result= $client->AddArticle(

array (

'art' => array (

'TITLE' => '新建的php文章标题'

)

));

?>

注意art是Article类的一个实例  , TITLE是Article类中的一个属性。

【Public  string   Fun(string  str);】

<?php

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$obj->str="3";

$result= $client-> Fun ($obj);

echo $ result -> FunResult;

?>

注意art  , TITLE是Article类中的一个属性。

【Public  Article  GetArticle(string id);】

<?php

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$obj->id="3";

$result= $client->GetArticle($obj);

echo var_export($result->GetArticleResult->TITLE);

echo "<br/>";

echo var_export($result->GetArticleResult->AUTHOR);

?>

注意:TITLE和AUTHOR是Article类的两个属性。

【Public  List<Article>   GetArticleList(string  flag);】

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$obj-> flag ="3";

$result= $client-> GetArticleList ($obj);

echo var_export($result-> GetArticleListResult-> Article);

echo var_export($result-> GetArticleListResult -> Article [0]-> TITLE);

 

【Publis  String[]   GetStrs();】

$client = new SoapClient ('http://localhost:8000/WCF/Service1.svc?wsdl');

$result =$client->GetStrs();

$aa= $result->GetStrsResult;   //输出整个数组

//$aa= $result->GetStrsResult->string[0];   //输出数组中第0项

print_r( $aa);

PHP调用WCF提供的方法的更多相关文章

  1. 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法

    关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace Wcf ...

  2. 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法

    废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namesp ...

  3. jquery或者JavaScript调用WCF服务的方法

    /****************************************************************** * Copyright (C): 一心堂集团 * CLR版本: ...

  4. IOS调用WCF提供的服务方法,但是方法的参数是WCF那边自定义的对象,这样有办法调用么,如果可以IOS应该怎么传参呢?请问有了解的么,

    最近做一个项目后端使用WCF接收Android手机拍照并带其它参数保存到服务器里:刚好把最近学习的WCF利用上,本以为是个比较简单的功能应该很好实现,没想到其中碰到不少问题,在网上搜索很久一直没有想到 ...

  5. 调用WCF接口的方法

    通过对接口调用可能出现的异常作出判断和处理,避免资源的浪费和占用~ public class SvcHelper { public static void Using(T client, Action ...

  6. 学习调用WCF服务的各种方法

    1.开发工具调用WCF 这中方法很方便也很简单,很多工作VS就帮我们完成了.相信大家也不会对这种方法陌生.这里简单提一下.打开VS,在项目中添加服务引用: 在config中自动声明了有关服务的节点信息 ...

  7. [转]学习 WCF (6)--学习调用WCF服务的各种方法

    转自:http://www.cnblogs.com/gaoweipeng/archive/2009/07/26/1528263.html 作者这篇博文写得很全面. 根据不同的情况,我们可以用不同的方法 ...

  8. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  9. 动态调用WCF

    最近在做的一个项目中需要动态调用WCF地址,因为有很多终端服务器,而每台终端服务器上都部署一个WCF服务,中央服务器需要不定时调用其中某个或者多个WCF服务执行相关操作,因此添加引用及配置文件配置的方 ...

随机推荐

  1. 在 Windows 上创建虚拟机规模集和部署高度可用的应用

    利用虚拟机规模集,可以部署和管理一组相同的.自动缩放的虚拟机. 可以手动缩放规模集中的 VM 数,也可以定义规则,以便根据资源使用情况(如 CPU 使用率.内存需求或网络流量)进行自动缩放. 在本教程 ...

  2. sshpass 绕过ssh 密码交互式验证

    经常我们使用脚本登入服务器的时候,如果使用ssh 命令,经常会提示密码输入,我们不得不手动输入密码,因为ssh 没有 密码的选项. 为了能绕过交互式验证,我们使用sshpass命令解决这个问题: 1. ...

  3. MySQL运维之---mysqldump备份、select...into outfile、mysql -e 等工具的使用

    1.mysqldump备份一个数据库 mysqldump命令备份一个数据库的基本语法: mysqldump -u user -p pwd dbname > Backup.sql 我们来讲解一下备 ...

  4. 一、Ajax 二、JSON数据格式 三、Ajax+Jquery 四、分页的实现

    一.Ajax概述###<1>概述 ###<2>组成 以XMLHttpRequest为核心,发送Ajax请求和接收处理结果 以javascript为语言基础 以XML/JSON作 ...

  5. mitmproxy

    通过脚本定制化实现篡改request或者response mitmproxy 顾名思义中间人代理[man-in-the-middle proxy],和fiddler.Charles等工具类似,通过代理 ...

  6. Alpha- 事后诸葛亮(麻瓜制造者)

    目录 预期计划 现实进展 团队体会 成员分工及工作量比例 会议总结 预期计划 在Alpha阶段开始之前,我们的预期计划是:从用户登录,发布商品.发布求购信息的基本功能开始做起.用户登录使用输入教务处的 ...

  7. sublime text3 setting-user

    { "caret_style": "smooth", "find_selected_text": true, "font_size ...

  8. Vuex状态管理详解

    什么是Vuex 专门为vue应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态(数据),以相应的规则保证状态以一种可预测的方式发生改变 Vuex的作用(什么样的情况下使用Vuex) 多 ...

  9. python第三十五课——生成器

    1.生成器: 什么是生成器? 它内部封装了一套公式/算法,只有等到需要调用/执行数据时 --> next()函数执行 才会将公式计算得到数据结果,这就是生成器的原理(核心思想): [注意事项]: ...

  10. Volley源码分析(四)NetWork与ResponseDelivery工作原理

    这篇文章主要分析网络请求和结果交付的过程. NetWork工作原理 之前已经说到通过mNetWork.performRequest()方法来得到NetResponse,看一下该方法具体的执行流程,pe ...