`
han2000lei
  • 浏览: 273200 次
  • 性别: 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;
		}
}
分享到:
评论

相关推荐

    软件过程规范示例.pdf

    软件过程规范示例.pdf

    QT连接阿里云服务器的MySql数据库示例

    QT连接阿里云服务器的MySql数据库示例

    C#对接阿里云物联网平台示例源码(NetGadgeteer 温度、湿度、LED).rar

    //阿里云文档:https://help.aliyun.com/document_detail/30539.html?spm=5176.doc42743.6.574.ewvmlO // https://open.aliplus.com/doc_pass/mqtt_mode.html //#define TLS_DirectConnection using System; using ...

    部署Django到阿里云服务器教程示例

    接下来先安装这些必要的环境,这些操作都是在你已经购买了阿里云服务器。并且在本地你已经搭建好了Django博客。现在我们所做的就是把本地的环境在阿里云的服务器上重新搭一遍。 这里先简单的说一下阿里云服务器,我...

    阿里云短信发送示例代码

    接入阿里云短信,java示例代码

    软件秘籍示例代码

    软件秘籍 设计模式那点事 示例代码

    软件开发文档示例

    软件开发各个阶段及流程的详细文档,如:概要设计说明书、软件测试报告、系统实施工作计划、项目开发计划、任务清单及工作量估算、软件开发计划书模版、客户初步需求调查概述...等。以实例的方式阐述软件工程的思想...

    软件工程文档示例

    软件工程文档示例软件工程文档示例

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

    在Qt程序中使用阿里巴巴最新发布的商用字体——普惠体,可以有效地防止字体带来的商业纠纷。 通用加载字体文件来设置软件使用的字体。

    阿里短信接口示例asp版

    阿里短信接口示例asp版,只需要替换自己的keyid ,key值 短信模版,短信签名即可使用

    java实现上传文件到oss(阿里云)功能示例

    主要介绍了java实现上传文件到oss(阿里云)功能,结合实例形式详细分析了java上传文件到阿里云的具体步骤、配置及相关实现技巧,需要的朋友可以参考下

    软件流程图示例PDF/JPG

    软件流程图的简单示例,最好用VISIO画!里面有一个我自己用VISIO画的,然后转成PDF了

    阿里云短信接口示例代码及jar包.zip

    该资源位阿里云短信接口调用示例代码,其中包含对应需要的jar包,代码下载后只需要更改自己注册的阿里云信息和电话号码就可以直接运行。

    structs 2 登录示例

    structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习

    阿里巴巴EasyExcel使用示例

    该压缩包解压后,含阿里巴巴easyexcel的简单使用示例的部分代码。 含:下载导入模板,通过模板导入(含单元格的合并操作),导出(用指定模板导出),controller,实体,监听等文件 使用说明解压后的文件中已经包含...

    Qt Mqtt连接阿里云示例

    本示例用于演示 如何用MQTT连接到阿里云IOT,本文主要介绍基于TCP的MQTT连接,客户端直连。详情参加博客 https://blog.csdn.net/luoyayun361

    软件著作权申请文件示例

    再次提供我之前申请的软著的部分文件示例。希望能有帮助 再次提供我之前申请的软著的部分文件示例。希望能有帮助 再次提供我之前申请的软著的部分文件示例。希望能有帮助

    软件设计说明示例

    基于模型驱动设计的软件设计文档,有助于基于模型驱动设计过程的理解。

    wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例

    wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf示例wpf...

Global site tag (gtag.js) - Google Analytics