方法如下:

<?php
header('Content-Type: text/html; charset=UTF-8');
define('APP_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);
$wsdlurl = "http://uniplatform.essence.com.cn/UniIdentity.asmx?wsdl";
$domain = "http://tgfx.essence.com.cn";
$qydomain = "http://ep.essence.com.cn";
$scharset = "utf-8";
$qyuser = null;
session_start();
$logincert =(empty($_GET["logincert"])) ? false:trim( $_GET["logincert"]);
$loginsso =(empty($_GET["ssocert"])) ? false:trim( $_GET["ssocert"]);//F38531ADE7D5221BE0438C92070AC392 if($logincert){
//是否已经在本平台登录过
$qyuser = $_SESSION['loginQiYeUserInfo'];
if(isset($qyuser) && !empty($qyuser)){
if( $qyuser['loginCert'] && $qyuser['loginCert'] == $logincert ){
//已经登录 直接进入 系统
echo '<script>window.location.href="'. $domain .'"</script>';exit;
}else{
//清空session
$_SESSION['loginQiYeUserInfo'] = null; //可能是另一个用户进来
}
}else{
//取下COOKIE中是否有
/*if (isset($_COOKIE["loginQissocert"]))
$loginsso = trim($_COOKIE["loginQissocert"]);*/
}
$rest = checkIntoSystem ($wsdlurl ,$logincert,$loginsso , $scharset , $qyuser); //认证
if($rest) {
//把$loginsso 保存到Cookie
//setcookie("loginQissocert", $loginsso,time()+3600);
//去拿到 员工的ID 以及其它信息保存在Session中
echo '<script>window.location.href="'. $domain .'"</script>';exit;
}else{
echo '<script>window.location.href="'. $domain .'/fail.html"</script>';exit;
}
} /**
* 认证 登录人员
*/
function checkIntoSystem( $wsdlurl ,$logincert,$loginsso ="" ,$scharset="utf-8",& $qyuser =null ){
if(empty($logincert)) return false; $scoptions = array (
'trace' => true, 'soap_version' => SOAP_1_2,
'exceptions' => false, 'encoding' => $scharset
);
$checkparam = array (
'userIP' => getClientIP(), //IP地址
'loginCert' => @ $logincert ,'SSOCert' => $loginsso, //登录的信息
'target' => "1045"//机器编号
);
//print_r($checkparam);
//调用门户接口测试
try {
$client = new SoapClient($wsdlurl, $scoptions); //print_r($client->__getFunctions()); //print_r($client->__getTypes());
/**
* 验证用用户是否能够进入系统性
*/
$resultdata=null ;
$check_rt = $client->__soapCall("SSOAuthenticat", array($checkparam) );
if ( $check_rt ) { //SSOAuthenticatResult是认证返回值变量
$returnstr = $check_rt->SSOAuthenticatResult;
if ($returnstr) {
$resultdata = explode('|', $returnstr);
}
//print_r($resultdata);
$rcode = trim($resultdata[0]);
switch ($rcode){
case "100":
$logusername = @ trim($resultdata[1]);
$qyuser['loginCert'] = $_GET["logincert"];
$qyuser['ltype'] = "QAN";
$qyuser['loginuname'] = $logusername;
$_SESSION['loginQiYeUserInfo'] = $qyuser; return true;//认证通过 可以登录
break;
case "201": echo "认证结果:验证失败"; break;
case "101": echo "认证结果:没有权限"; break;
default:echo "未知错误"; break;
} } else {
echo "认证返回结果为NULL,请检查再试。";
}
} catch (SoapFault $soapFault) {
//echo $soapFault;
echo "<===>" . $soapFault->faultstring;
$file = APP_ROOT."logs/error/".date("Ymd_His").time()."log";
file_put_contents($file,$soapFault);//记录异常信息
}
return false;
} // 定义一个函数getIP()
function getClientIP(){
$ip = "";
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else $ip = "Unknow"; return $ip;
} //获取所有部门
function SoapAllDepar($wdsl, $options) {
$mms = $client->GetAllDepartment(NULL);
//$xmlstring = base64_decode($mms->GetAllDepartmentResult);
}

  

PHP 调用webService方式的更多相关文章

  1. 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】

    不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...

  2. Atitit 动态调用webservice与客户端代理方式调用

    Atitit 动态调用webservice与客户端代理方式调用 方式1: 使用call.invoke  直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解 ...

  3. C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用

    1.直接调用 已知webservice路径,则可以直接 添加服务引用--高级--添加web引用 直接输入webservice URL.这个比较常见也很简单 即有完整的webservice文件目录如下图 ...

  4. C# .NET 动态调用webservice的三种方式

    转载自 百度文库 http://wenku.baidu.com/link?url=Q2q50wohf5W6UX44zqotXFEe_XOMaib4UtI3BigaNwipOHKNETloMF4ax4W ...

  5. [转]Net 下采用GET/POST/SOAP方式动态调用WebService C#实现

    本文转自:http://www.cnblogs.com/splendidme/archive/2011/10/05/2199501.html 一直以来,我们都为动态调用WebService方法而烦恼. ...

  6. .Net 下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#) [轉]Redfox

    一直以来,我都为动态调用WebService方法而烦恼.在.Net环境下,最常用的方法就是采用代理类来调用WebService,可以通过改变代理类的Url属性来实现动态调用,但当xmlns改变时就会出 ...

  7. 使用ajax和urlconnection方式调用webservice服务

    <html> <head> <title>使用ajax方式调用webservice服务</title> <script> var xhr = ...

  8. axis2调用webService几种方式

    主要有三种方式: 第一RPC方式,不生成客户端代码 第二,document方式,不生成客户端代码 第三,用wsdl2java工具,生成客户端方式调用 java代码: package samples.q ...

  9. Java调用WebService方法总结(9,end)--Http方式调用WebService

    Http方式调用WebService,直接发送soap消息到服务端,然后自己解析服务端返回的结果,这种方式比较简单粗暴,也很好用:soap消息可以通过SoapUI来生成,也很方便.文中所使用到的软件版 ...

随机推荐

  1. .net点选验证码实现思路分享

    哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...

  2. Jquery的点击事件,三句代码完成全选事件

    先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  3. MIP开发常见问题解答

    校验相关 1. MIP 页面的 <a>链接校验报错,MIP 是强制 target="_blank" 吗? 如果想直接跳转MIP页,可以用mip-link 组件:MIP ...

  4. Js 原型和原型链

    Js中通过原型和原型链实现了继承 Js对象属性的访问,首先会查找自身是否拥有这个属性 如果查到,则返回属性值,如果找不到,就会遍历原型链,一层一层的查找,如果找到就会返回属性值 直到遍历完Object ...

  5. 我为NET狂官方面试题-数据库篇

    求结果:select "1"? 查找包含"objs"的表?查找包含"o"的数据库? 求今天距离2002年有多少年,多少天? 请用一句SQL获 ...

  6. 【干货分享】流程DEMO-请休假

    流程名: 请假申请  流程相关文件: 流程包.xml WebService业务服务.xml WebService.asmx WebService.cs  流程说明: 流程中集成了webservice服 ...

  7. Apache Cordova开发Android应用程序——番外篇

    很多天之前就安装了visual studio community 2015,今天闲着么事想试一下Apache Cordova,用它来开发跨平台App.在这之前需要配置N多东西,这里找到了一篇MS官方文 ...

  8. 检查sql执行效率

    SELECT  SUBSTRING(ST.text, ( QS.statement_start_offset / 2 ) + 1,                    ( ( CASE statem ...

  9. 如何开启MySQL 5.7.12 的二进制日志

    1. 打开/etc下的my.cnf文件 2. 编辑它,添加内容: log_bin=binary-log   #二进制日志的文件名 server_id=1  #必须指定server_id,这是MySQL ...

  10. 将css和js缓存到localStorage缓存,提高网页响应速度

    适用于小站点,这很极致,很快速~~ /** * Created by SevenNight on 2016/9/21 0021. * 插件功能:使用localStorage缓存js和css文件,减少h ...