方法如下:

<?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. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  2. AngularJs之九(ending......)

    今天继续angularJs,但也是最后一篇关于它的了,基础部分差不多也就这些,后续有机会再写它的提升部分. 今天要写的也是一个基础的选择列表: 一:使用ng-options,数组进行循环. <d ...

  3. Android之常见问题集锦Ⅱ

    Android问题集锦Ⅰ:http://www.cnblogs.com/AndroidJotting/p/4608025.html EditText输入内容改变事件监听 _edit.addTextCh ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

  5. 使用ubuntu作为web开发环境的一些感受

    从ms-dos,win95,win98,winMe,winXp,vista,win7,win10我都有使用的经历,我使用时间最长的应属winxp,其次是win7,说实话,我觉得这两个系统是微软做的最好 ...

  6. pt-pmp

    pt-pmp有两方面的作用:一是获取进程的堆栈信息,二是对这些堆栈信息进行汇总. 进程的堆栈信息是利用gdb获取的,所以在获取的过程中,会对mysql服务端的性能有一定的影响. 用官方的话说: Thi ...

  7. 使用 Android Studio 检测内存泄漏与解决内存泄漏问题

    本文在腾讯技术推文上 修改 发布. http://wetest.qq.com/lab/view/63.html?from=ads_test2_qqtips&sessionUserType=BF ...

  8. CGI与FastCGI nginx+PHP-FPM

    本文转载自CGI与FastCGI 1.当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html. ...

  9. 9、委托、事件、Lambda

    开始 关于委托,肯定是要有问题的. 第一个问题,委托用来干什么? 看.net中的表述:在.net平台下,委托类型用来定义和相应应用程序中的回调.(回调?处理内存中两个实体双向通信的一种技术.)   第 ...

  10. Go web开发初探

    2017年的第一篇博客,也是第一次写博客,写的不好,请各位见谅. 本人之前一直学习java.java web,最近开始学习Go语言,所以也想了解一下Go语言中web的开发方式以及运行机制. 在< ...