首页 arrow 本站论坛
J2ME游戏开发论坛
欢迎您, 游客
请您在右方表单注册或登陆.
处理重定向 (1 个人正在浏览) (1) 游客
到底部
被收藏: 0
话题: 处理重定向
#374
myōgakin (会员)
Moderator
帖子: 58
graphgraph
该会员已离线 点此观看该会员的个人资料
处理重定向 3 年, 6 月 之前 评分: 4  
用了些AJAX API,不过核心主要是login()里的逻辑
[code:1]import javax.microedition.io.HttpConnection;

import com.sun.me.web.path.Result;
import com.sun.me.web.request.Arg;
import com.sun.me.web.request.Request;
import com.sun.me.web.request.Response;

public class Session {
private static Session session;
private String authToken;
private static final int MAX_REDIRECTS = 5;
private String requestMethod = HttpConnection.POST;
private boolean islogin;

private Session() {

}

public static final Session getInstance() {
if ( session == null) session = new Session();
return session;
}

public boolean isLogin() {
return authToken!=null && islogin;
}

public Session login(String userName, String password) throws Exception {
String url = "http://www.j2megame.org";
Arg[] inputArgs = {
new Arg("username", userName),
new Arg("password", password)
};
Arg[] httpArgs = {new Arg("Content-Type", "application/x-www-form-urlencoded"«»)};
Response response = Request.post(url, inputArgs, httpArgs, null, null);
Arg[] headers;
int redirects = 0;
while( redirects < MAX_REDIRECTS) {
int status = response.getCode();
if ((status >= HttpConnection.HTTP_MOVED_PERM && status <= HttpConnection.HTTP_SEE_OTHER) ||
status == HttpConnection.HTTP_TEMP_REDIRECT) {
requestMethod = HttpConnection.POST;
if (status == HttpConnection.HTTP_MOVED_TEMP || status == HttpConnection.HTTP_SEE_OTHER) {
requestMethod = HttpConnection.GET;
}

headers = response.getHeaders();
for ( int i = 0 ; i < headers.length ; i++) {
try {
if ( "location".equals(headers[i].getKey())) {
response = null;
if (requestMethod.equals(HttpConnection.POST))
response = Request.post(headers[i].getValue(), inputArgs, httpArgs, null, null);
else
response = Request.get(headers[i].getValue(), null, null, null);
}
if ( "Set-Cookie".equalsIgnoreCase(headers[i].getKey())) {
setAuthToken(headers[i].getValue());
}
}
catch(Exception e) {
e.printStackTrace();
}
}
if (++redirects > MAX_REDIRECTS) {
// Too many redirects - give up.
break;
}
continue;
}
if (status == HttpConnection.HTTP_OK) {
Result result = response.getResult();
if ( result == null) {
islogin = false;
return this;
}
try {
String code = result.getAsString("code"«»);
if ("0".equals(code)) islogin = true;
}
catch (Exception e) {
islogin = false;
}

break;
}
}
if ( !isLogin() ||"".equalsIgnoreCase(authToken.trim())) throw new IllegalArgumentException();
return this;
}

public Session logout() {
return this;
}

public Session setAuthToken( String authToken) {
this.authToken = authToken;
return this;
}

public String getAuthToken() {
return authToken;
}

}
[/code:1]

帖子被编辑由 演绎者, 于 2008-08-13 09:21

帖子被编辑由 演绎者, 于 2008-08-13 09:24
 
 
 
myōgakin
  只有注册会员才能发帖
#377
Wupei (管理员)
Moderator
帖子: 301
graph
该会员目前在线 点此观看该会员的个人资料
回复:处理重定向 3 年, 6 月 之前 评分: 14  
http链接..支持..挺复杂...

不知J2ME对HTTP支持到多大程度~:

还有就是可以使用Code啊,可以支持代码高亮呀~<br><br>帖子被编辑由 rablwupei, 于 2008-08-12 22:31
 
 
  只有注册会员才能发帖
#1235
佛言无罪 (会员)
Fresh Boarder
帖子: 1
graphgraph
该会员已离线 点此观看该会员的个人资料
回复:处理重定向 1 年, 11 月 之前 评分: 0  
你好,想问一下com.sun.me.web.request.Request;这个jar包如何使用呢,在服务器端如何将数据传送到手机客户端中呢,谢谢
 
 
  只有注册会员才能发帖
到顶部