C#使用PHP服务端的Web Service通信实例


Posted in PHP onApril 08, 2014

注:本例中构建Web Service采用SOAP方式,通过php插件NuSoap来搭建SOAP服务器。

<?
require_once("lib/nusoap.php"); //调用NuSoap
$server = new soap_server(); //创建soap服务端
$server->configureWSDL("login_service"); //配置WSDL
$namespace = "http://www.abcd9.com"; 
$server->wsdl->schemaTargetNamespace = $namespace; //设置wsdl命名空间为http://www.abcd9.com
$server->register( // 注册Web服务
        'login_verifiy', //定义名称 
        array('name'=>'xsd:string','pw'=>'xsd:string'),  //接受参数
        array('return'=>'xsd:string'),  //返回
        $namespace, //命名空间
        false, // soapaction:默认
        'rpc', // 类型: rpc or document
        'encoded', // 参数:encoded(编码)或 literal(文字)
        'A web method of login' //描述
);        
$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA'])? $GLOBALS['HTTP_RAW_POST_DATA'] : '';                
$server->service($POST_DATA); //将提交的数据传递给soap服务
function login_verifiy($user,$pw) { //服务执行内容,本示例中为显示输入的帐号密码
 return 'user:'.$user.' password:'.$pw);
}
?>

 

C#客户端调用:

[DllImport("kernel32")] //调用api函数读ini文件。返回值为字符串缓冲区的长度
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
private void Form1_Load(object sender, EventArgs e)
{
    StringBuilder temp = new StringBuilder(256);
    GetPrivateProfileString("system", "url", null, temp, 256, System.IO.Directory.GetCurrentDirectory()+"\\config.ini");  
    //通过读取config.ini配置文件(结构见附加内容)来获取webservice url
    Program.server_url = temp.ToString(); //Program.cs中的全局变量server_url用以储存webservice url
}
private void button1_Click(object sender, EventArgs e)
{
    WebReference.login_service l = new WebReference.login_service();
    string s=l.login_verifiy(username.Text, password.Text);
    MessageBox.Show(s);
}

附config.ini内容:
[system]
url=http://127.0.0.1:100/
PHP 相关文章推荐
PHP学习笔记之数组篇
Jun 28 PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
PHP重定向的3种方式
Mar 07 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
php获取apk包信息的方法
Aug 15 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
php需登录的文件上传管理系统
Mar 21 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP实现的数组和XML文件相互转换功能示例
Mar 15 PHP
使用PHP开发留言板功能
Nov 19 PHP
php实现水仙花数的4个示例分享
Apr 08 #PHP
php命令行使用方法和命令行参数说明
Apr 08 #PHP
php实现httpclient类示例
Apr 08 #PHP
php使用json_encode对变量json编码
Apr 07 #PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 #PHP
PHP中的Memcache详解
Apr 05 #PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 #PHP
You might like
PHP中str_replace函数使用小结
2008/10/11 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
学习PHP session的传递方式
2016/06/15 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
基于jQuery的动态表格插件
2011/03/28 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
原生javascript实现解析XML文档与字符串
2016/03/01 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
[12:36]《DOTA2》国服注册与激活指南全攻略
2013/04/28 DOTA
python使用cookie库操保存cookie详解
2014/03/03 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
Django csrf 验证问题的实现
2018/10/09 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python 基于opencv操作摄像头
2020/12/24 Python
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
《临死前的严监生》教学反思
2014/02/13 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
小学综合实践活动总结
2014/07/07 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
索尼ICF-5900W收音机测评
2022/04/24 无线电