【发布时间】:2014-04-24 12:40:36
【问题描述】:
这是一个 java web 服务方法,当 android 用户第二次调用时我们会得到一个新的 session id。那么如何解决呢? 我们在 android 客户端登录时创建了新的 sessionId,然后他们在 json 字符串中发送了相同的 sessionId,即使每次都会生成一个新的 sessionId。
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import com.bis.gauizz.utils.JsonUtil;
@Path("/Service")
public class WebService {
@GET
@Path("/Text")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String getDataText() {
System.out.println("in getDataText Method");
return "in getDataText Method";
}
@GET
@Path("/Json")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@HeaderParam("User-Agent")
public String getDataJson(@Context UriInfo request,
@Context HttpServletRequest req) throws InvalidKeyException,
NoSuchAlgorithmException, InvalidKeySpecException,
NoSuchPaddingException, InvalidAlgorithmParameterException,
UnsupportedEncodingException, IllegalBlockSizeException,
BadPaddingException {
String returnJson = null;
//User Agent
String userAgent = req.getHeader("User-Agent").toString();
System.out.println(userAgent);
// Create sessionID
HttpSession idSession = null;
if(req.getSession(false) == null){
idSession = req.getSession();
if(idSession.isNew())
{
System.out.println("New SessionId");
}
else
{
System.out.println("Old SessionId");
idSession = req.getSession(true);
}
}else{
//To check SessionId is new Or not
}
if (idSession != null) {
request.getQueryParameters().get("json");// most impotent
JsonUtil jsonUtil = new JsonUtil();
returnJson = jsonUtil.getJson(request.getQueryParameters()
.get("json"), idSession);
}
return returnJson;
}
}
【问题讨论】:
标签: java android session restful-url