`
han2000lei
  • 浏览: 278483 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

阿里软件免登录示例

阅读更多

使用java来开发阿里软件的朋友来看了,这里是一个java调用的免登录入口的例子
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.alisoft.sip.sdk.isv.SignatureUtil;//此包需要在阿里软件网站上进行下载:sip-sdk-for-java-1.0.jar

/** 
 * MyEclipse Struts
 * Creation date: 03-26-2009
 * 
 * XDoclet definition:
 * @struts.action validate="true"
 */
public class ValidaterAction extends Action {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public static java.text.SimpleDateFormat SIP_TIMESTAMP_FORMATER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//时间格式
		
		public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
			
			String code=null,result=null;//code为返回的状态码,result为返回信息
			
			//在软件应用中心跳转到ISV应用时的URL参数中取得,user_id、app_instance_id和token
			Map<String, String> map = new HashMap<String, String>();//输入各个参数
			String sip_timestamp = SIP_TIMESTAMP_FORMATER.format(new Date());
			map.put("token", request.getParameter("token"));
			map.put("appId", request.getParameter("appId"));
			map.put("userId", request.getParameter("userId"));
			map.put("appInstanceId", request.getParameter("appInstanceId"));
			map.put("sip_sessionid",request.getSession(true).getId());
			map.put("sip_appkey","11004");
			map.put("sip_appsecret","9313bfb0304311ddb2e1bcf28e0b2955");
			map.put("sip_apiname", "alisoft.validateUser");
			map.put("sip_timestamp", sip_timestamp);
	//签名,生成sip_sign参数,SignatureUtil是下载中心中sip-sdk-for-java-1.0.jar中的一个类,ISV可以将包下载上来,加载到工程中.
			String sign = SignatureUtil.Signature(map,map.get("sip_appsecret"));
			map.put("sip_sign", sign);

	//组织要提交的参数
			StringBuffer buffer = new StringBuffer();
			boolean notFirst = false;
			for (Map.Entry<String, ?> entry : map.entrySet()) {
				if (notFirst) {
					buffer.append("&");
				} else {
					notFirst = true;
				}
				Object value = entry.getValue();
				buffer.append(entry.getKey()).append("=").append(
						encodeURL(value) );
			}
			String queryString=buffer.toString();
	//发送访问请求, 目前阿里软件的服务集成平台(SIP)的接口测试地址是:http://sipdev.alisoft.com/sip/rest,生产环境地址是:http://sip.alisoft.com/sip/rest,这里使用测试接口先,到正式上线时需要做切换
		try{
			HttpURLConnection conn = (HttpURLConnection) new URL("http://sipdev.alisoft.com/sip/rest").openConnection();
			conn.setRequestMethod("POST");	
			conn.setDoOutput(true);
			conn.connect();
			conn.getOutputStream().write(queryString.getBytes());
			String charset = this.getChareset(conn.getContentType());
			BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));//设置编码
			StringBuffer outbuffer = new StringBuffer();
			String line;
			while ((line = reader.readLine()) != null) {
				outbuffer.append(line);
			}
			reader.close();
	//解析接口返回值
	        code = conn.getHeaderField("sip_status");//返回的状态码
	        conn.disconnect();
	        result=outbuffer.toString();//返回内容
			}catch(Exception e){e.printStackTrace();}
			if (result!=null) {
				// 请求返回的status为成功状态
				if (code.equals("9999")) {
	//解析返回的结果result,确定用户的身份......
				}
			}
			return null;//免登录成功后你可以根据自己的业务逻辑跳转
		}
		
		
		
		
		
		private String getChareset(String contentType) {
			int i = contentType == null ? -1 : contentType.indexOf("charset=");
			return i == -1 ? "GBK" : contentType.substring(i + 8);//UTF-8
		}
	//编码
		private String encodeURL(Object target) {
			String result = (target != null) ? target.toString() : "";
			try {
				result = URLEncoder.encode(result, "gbk");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			return result;
		}
}
分享到:
评论

相关推荐

    Qt使用阿里巴巴普惠体示例

    在本文中,我们将深入探讨如何在Qt应用程序中使用阿里巴巴...这样,你的软件就能呈现出独特且合规的视觉效果,同时避免了版权问题。在实际开发中,记得根据需要调整字体大小、颜色、样式等属性,以达到最佳的用户体验。

    易语言 阿里滑块验证 接口 dll接口 http接口

    阿里滑块验证是一种常见的图形验证码技术,用于防止自动化程序或机器人进行非法操作,如批量注册、恶意登录等。这种验证方式要求用户通过移动滑块来完成拼图,以此证明他们是人类而非计算机程序。 易语言是一种中国...

    阿里Java开发手册-黄山版

    《阿里Java开发手册-黄山版》是一份由Java社区爱好者共同智慧结晶的开发规范文档,旨在提高Java开发者的综合素质和软件质量。这份手册经过多次实战检验,并不断优化,形成了一个全面且系统的指导体系。手册主要涵盖...

    C#接入阿里云文字转语音.rar

    总结来说,通过C#接入阿里云的文字转语音服务,我们可以轻松地在Unity项目中实现文本到语音的转换,为游戏、教育软件、智能助手等应用增添更多交互性。同时,合理利用阿里云TTS的免费额度,可以帮助开发者在初期阶段...

    阿里巴巴网址大全(

    由于具体文件内容未知,我们只能推测它可能包含了一系列子目录和文件,如不同的控件库、开源代码项目、教程文档、示例程序等。这些内容可能会涵盖各种编程语言(如Java、Python、C++)、前端框架(如React、Vue)、...

    使用 RaiDrive 实现挂载阿里云盘到本地 并且 开机自启动(附带教程).zip

    在本文中,我们将深入探讨如何使用 RaiDrive 软件将阿里云盘挂载到本地计算机,并设置为开机自启动。RaiDrive 是一个轻量级的工具,它允许用户将各种在线存储服务,如阿里云盘,作为网络驱动器映射到Windows系统中,...

    spring-cloud-alibaba,spring cloud alibaba为阿里中间件的分布式解决方案提供了一站式的应用开发解决方案。.zip

    - **快速入门**: 开发者可以通过官方文档或示例代码快速上手,了解如何集成和使用各个组件。 - **最佳实践**: 学习社区中的最佳实践案例,优化自己的应用设计和架构。 - **版本更新**: 保持对新版本的关注,以便...

    D2Admin 开源免费的企业中后台产品前端集成方案.rar

    阿里系出品。 特点:可支持拖拽的框架 https://d2.pub/zh/ 文档:D2Admin | D2 Open Source 示例预览:D2Admin 3、MUI MUI: The React component library you always wanted 特点:国外风格,界面设计非常...

    SpringBoot集成ocr功能demo

    本项目是关于如何在Spring Boot中集成OCR(Optical Character Recognition,光学字符识别)功能的一个示例,旨在帮助开发者了解和实现Spring Boot应用中的OCR集成。 首先,OCR技术是一种能够将图像中的文字识别为可...

    WebNoteEditor免费版本

    开发者可以通过API接口或者SDK来定制编辑器的功能,满足特定业务需求,例如自定义样式、添加特殊插件,甚至实现与第三方服务的集成,如云存储服务(如阿里云OSS)或版本控制系统(如Git)。 在压缩包"WebNoteEditor...

    剖面精灵2011.rar 带注册机

    10. **教程与资源**:软件可能附带教程和示例项目,帮助新用户快速上手,并提供社区资源以供用户交流学习。 11. **版本更新**:尽管是2011年的版本,但了解软件后续的版本更新和改进可以帮助用户评估其是否满足当前...

    MQTT客户端-v3.1.1中文.zip

    5. 易用性:软件界面是否直观易用,是否提供足够的帮助文档和示例,以便用户快速上手。 随着物联网技术的迅速发展,对于MQTT协议的需求日益增长。对于想要进入物联网领域或深入研究物联网通信的专业人士来说,掌握...

    Software Defined Radio using MATLAB Simulink and the RTL-SDR

    电子书还提供了用于教学和学习目的的仿真示例、设计练习以及与MATLAB和Simulink相关的文件和软件资源。这些资源可以通过书的配套网站***下载,也可以通过USB存储、云存储、磁盘或任何其他电子、光学或磁性存储机制...

    asp.net蓝色电子商务网站源码

    软件介绍: 后台管理从前台网站输入http://***.***.***/admin 进入后台管理,管理员:admin 登陆密码:wygkcn123456 ,企业会员测试帐号:wygkcn 密码:123456 ,免费申请虚拟主机域名注册试用http://www.wygk.net/ 功能...

    接口文档模板.docx

    接口文档在软件开发中起着至关重要的作用,它定义了不同系统或组件之间的通信规则,确保数据能够准确、高效地传递。以下是一个详尽的接口文档模板及其关键知识点的解析: 1. **接口文档的基本结构** - **接口名称*...

    JAVA_Eyekey免费人脸识别API.zip

    API是一组预定义的函数、类、对象和协议,它们允许不同的软件应用程序之间进行交互。在本例中,“JAVA_Eyekey免费人脸识别API”提供了一个接口,使开发人员能够用Java编程语言轻松地集成人脸识别功能到他们的应用...

    90套Axure原型模板源文件Rp高保真ui产品经理app web 网站案例模板(Axure9制作).zip

    格式:RP格式(Axure软件) 产品经理全套文档模板 Axure8可以打开8、7版本制作 Axure9可以全部打开9、8、7版本制作 ——网站 阿里云网站.rp 车辆违章处理.rp 城市介绍网站.rp 城市旅游网站.rp 城市网站.rp 城市网站...

    软WAF上传绕过+wbehshell免杀-漏洞银行大咖面对面9-ian

    软WAF(软件Web应用防火墙)是一种基于软件实现的Web应用防火墙,通常用于检测和阻止恶意流量。为了绕过软WAF的防护机制,攻击者可以采取多种策略和技术手段。 ##### (1)扰乱编码 扰乱编码是一种常见的绕过技术,...

    antv-g6初试身手demo

    在IT行业中,AntV G6 是一款由阿里云开发的专注图形语法的图表库,它主要应用于数据可视化领域,尤其适合构建复杂的流程图、网络拓扑图和组织结构图等。"antv-g6初试身手demo"是基于AntV G6 的一个示例项目,用于...

Global site tag (gtag.js) - Google Analytics