一、准备工作

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. MySQL 性能监控4大指标——第一部分

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分将详细介绍前两个指标: 查询吞吐量与查询执行性能.文章系国内 ITOM 管理平台 OneAPM ...

  2. Mac日常使用问题

    问题一: macbook如何关闭safari左侧书签栏? 方法1: 快捷键:control+command+1键 办法2: 把光标移到safari顶部, 菜单单出来后, 选择view-->sho ...

  3. Python学习--Selenium模块

    1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台

  4. security/pam_appl.h:没有那个文件或目录

    在编译开源库时, 提示 pam.h:4:10: 致命错误:security/pam_appl.h:没有那个文件或目录 #include <security/pam_appl.h> 解决方法 ...

  5. MySQL权限管理分配

    之前一直忽视了MySQL的权限这一块的内容,以为一般般的知识点,随时用随时学就好了,导致自己这方面稍微有点不太明白的地方,总是踩坑,所以后来就总结一下: 1.MySQL权限系统的工作原理 .对连接的用 ...

  6. django模板系统(上)

    filters 过滤 default 替代作用 filesizeformat 格式化为人类可读 add 给变量加参数 lower 小写 upper 大写 title 标题 ljust 左对齐 rjus ...

  7. laravel 实现思路以及各组件原理

    laravel 内核是个IOC容器,IOC是把本来自己实例化的对象. 通过在容器里注册,通过容器来进行实例化. laravel队列用的是redis的列表来实现.

  8. 使用TuShare下载历史逐笔成交数据并生成1分钟线

    使用如下代码从TuShare下载沪深300每只股票的历史成交记录并按股票.日期保存到本地.主要是为了以后查询方便快速. #-*- coding: utf-8 -*- import numpy as n ...

  9. Python接口自动化--Json数据处理 5

    1.Json模块简介,全名JavaScript Object Notation,轻量级的数据交换格式,常用于http请求中. Encoding basic Python object hierarch ...

  10. 详解coredump

    一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要 ...