阿里软件免登录示例

[img]http://www.alisoft.com/cms/apps/images/logo/logo_350x50.gif[/img]
[b]使用java来开发阿里软件的朋友来看了,这里是一个java调用的免登录入口的例子[/b]:

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;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值