注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

发布Web Service(PHP)  

2011-02-01 12:55:50|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |



1.在网上查询了资料,决定采用开源组件nusoap。最初的server和client程序都很简单,纯粹用作测试
server.php
<?php
require_once("lib/nusoap.php");
//定义服务程序
function Get($num) {
  db_mysql_connect();
  $sql = "select email from user where num = '".$num."'";
  $tmp = mysql_query($sql);
  $num = mysql_num_rows ($tmp);
 
  if(!$num) return 'The User is not exist!';
  else if($num>1) return 'The User is not the only one!';
  else{
      $array = mysql_fetch_array($tmp);
   return $array[0];
  }
}
//初始化服务对象 , 这个对象是类 soap_server 的一个实例
$soap = new soap_server; //调用服务对象的 register 方法注册需要被客户端访问的程序。
//只有注册过的程序,才能被远程客户端访问到。
$soap->register('GetMailByUsernum'); //最后一步,把客户端通过 post 方式提交的数据,传递给服务对象的 service 方法。
//service 方法处理输入的数据,调用相应的函数或方法,并且生成正确的反馈,传回给客户端。
$soap->service($HTTP_RAW_POST_DATA);
?>

client.php
<?php
require_once("lib/nusoap.php");
//初始化客户端对象,这个对象是类 soapclient 的一个实例,
//把服务程序的 URL 地址传递给soapclient类的构造函数。
$client = new soapclient('address/server.php'); //利用客户端对象的 call 方法调用 WEB 服务的程序
$str=$client->call('GetMailByUsernum','XXXX'); //客户端对象的 getError() 方法可以用来检查调用过程是否出现错误。
//如果没有错误, getError() 方法返回 false ;如果有错误, getError()方法返回错误信息。
if (!$err=$client->getError()) {
    echo " 程序返回 :",htmlentities($str,ENT_QUOTES);
} else {
    echo " 错误 :",htmlentities($err,ENT_QUOTES);
}
?>

2.测试成功。但是这个web发布是没有任何安全设置以及登陆限制的,我在apache服务器端做了一些设置。首先是限定IP。
修改httpd.conf,增加下面几行:
//只接受来自192.168.1.11的请求,否则一律予以禁止
<Directory "/usr/local/apache2/htdocs/nusoap">
Order deny,allow
Deny from all
Allow from 192.168.1.11
</Directory>

3.制作密码文件。新建一个文件,并且增加test这个ID(针对apache.passwd文件的)
htpasswd -c apache.passwd test
这样test这个帐号就在/usr/local/apache2/bin/apache.passwd这个文件中。最好不要将这个文件放置在浏览器可以浏览到的目录。

4.针对被保护目录的设置
//目标目录
<Directory "/usr/local/apache2/htdocs/nusoap">
//这是显示在窗口上面的字符
AuthName "Protected Directory"
//这是认证的类型,选Basic即可,Apache的默认功能
AuthType Basic
//密码文件放置的地方,完整的目录与文件名
AuthUserFile /usr/local/apache2/apache.passwd
//允许的用户,valid-user为任何一个在认证文件当中的帐号即可。若是require user test则表示只有test才能登陆
require valid-user
</Directory>

5.要求生成wdsl文件,server作出相应的修改。
$soap = new soap_server; //调用服务对象的 register 方法注册需要被客户端访问的程序。
$soap->configureWSDL('GetMailByUsernum');
$soap->wsdl->schemaTargetNamespace = 'address/server.php';
这样就完成了。
  评论这张
 
阅读(1261)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017