使用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
QT连接阿里云服务器的MySql数据库示例
//阿里云文档: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博客。现在我们所做的就是把本地的环境在阿里云的服务器上重新搭一遍。 这里先简单的说一下阿里云服务器,我...
接入阿里云短信,java示例代码
软件秘籍 设计模式那点事 示例代码
软件开发各个阶段及流程的详细文档,如:概要设计说明书、软件测试报告、系统实施工作计划、项目开发计划、任务清单及工作量估算、软件开发计划书模版、客户初步需求调查概述...等。以实例的方式阐述软件工程的思想...
软件工程文档示例软件工程文档示例
在Qt程序中使用阿里巴巴最新发布的商用字体——普惠体,可以有效地防止字体带来的商业纠纷。 通用加载字体文件来设置软件使用的字体。
阿里短信接口示例asp版,只需要替换自己的keyid ,key值 短信模版,短信签名即可使用
主要介绍了java实现上传文件到oss(阿里云)功能,结合实例形式详细分析了java上传文件到阿里云的具体步骤、配置及相关实现技巧,需要的朋友可以参考下
软件流程图的简单示例,最好用VISIO画!里面有一个我自己用VISIO画的,然后转成PDF了
该资源位阿里云短信接口调用示例代码,其中包含对应需要的jar包,代码下载后只需要更改自己注册的阿里云信息和电话号码就可以直接运行。
structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习structs 2 登录示例,学习
该压缩包解压后,含阿里巴巴easyexcel的简单使用示例的部分代码。 含:下载导入模板,通过模板导入(含单元格的合并操作),导出(用指定模板导出),controller,实体,监听等文件 使用说明解压后的文件中已经包含...
本示例用于演示 如何用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...