📄 session.java.svn-base
字号:
package wFramework;
import java.io.IOException;
import javax.microedition.lcdui.Image;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParserException;
/**
* Session class. Keeps track and maintains connection with server.
* @author Marius Bj鴕ge
*
*/
public class Session implements ConnectionListener, XMLConnectionListener
{
private String sid;
private String fullname;
private String username;
private String domain;
private String lastError;
private int lastErrorCode;
public static String baseURL = "http://pandora.idi.ntnu.no/ipos/";
public Session()
{
sid = "";
fullname = "";
username = "";
domain = "";
}
/**
* Returns session id
* @return
*/
public String getSession()
{
return sid;
}
/**
* Returns username
* @return
*/
public String getUsername()
{
return username;
}
/**
* Returns fullname
* @return
*/
public String getFullname()
{
return fullname;
}
/**
* Returns domain
* @return
*/
public String getDomain()
{
return domain;
}
/**
* Builds XML tag. Automatically injects session id.
* <request sid='234234'>cmd</request>
* @param cmd
* @return
*/
public String buildXML(String cmd)
{
return "<request sid='"+sid+"'>" + cmd + "</request>";
}
/**
* Sends XML data to the server and returns response to listener.
* @param xml
* @param listener
*/
public void sendXML(String xml, XMLConnectionListener listener)
{
XMLConnection xc = new XMLConnection(listener);
xc.openURLAsync(baseURL, xml);
}
/**
* Sends XML data in full blocking mode.
* @param xml
* @return
*/
public KXmlParser sendXML(String xml)
{
XMLConnection xc = new XMLConnection();
return xc.openURLSync(baseURL, xml);
}
public boolean checkResponse(KXmlParser xml)
{
try
{
xml.nextTag();
String cmd = xml.getName();
if (cmd.equalsIgnoreCase("error") || cmd.equalsIgnoreCase("response") || cmd.equalsIgnoreCase("parsererror"))
{
lastError = xml.getAttributeValue(null, "msg");
lastErrorCode = Integer.parseInt(xml.getAttributeValue(null, "scode"));
if (cmd.equalsIgnoreCase("error"))
{
System.out.println("An error occured: [" + String.valueOf(lastErrorCode) + "] " + lastError);
return false;
}
else if (lastErrorCode != 200)
{
System.out.println("'" + cmd + "' failed: [" + String.valueOf(lastErrorCode) + "] " + lastError);
return false;
}
}
return true;
}
catch (Exception e)
{
e.printStackTrace();
}
return false;
}
/**
* Logs on to the server
* @param username
* @param password
* @param domain
*/
public boolean login(String username, String password, String domain)
{
String xmlstr = "<request><login username='"+username+"' password='"+password+"' domain='"+domain+"'/></request>";
KXmlParser xml = sendXML(xmlstr);
try
{
if (checkResponse(xml))
{
int type = xml.nextToken();
while (type != KXmlParser.END_DOCUMENT)
{
String cmd = xml.getName();
if (cmd != null && cmd.equalsIgnoreCase("loginresponse"))
{
sid = xml.getAttributeValue(null, "sid");
//domain = xml.getAttributeValue(null, "domain");
//username = xml.getAttributeValue(null, "username");
//fullname = xml.getAttributeValue(null, "fullname");
return true;
}
if (cmd != null && cmd.equalsIgnoreCase("domainname"))
if (xml.nextToken() == KXmlParser.TEXT)
domain = xml.getText();
if (cmd != null && cmd.equalsIgnoreCase("username"))
if (xml.nextToken() == KXmlParser.TEXT)
domain = xml.getText();
if (cmd != null && cmd.equalsIgnoreCase("fullname"))
if (xml.nextToken() == KXmlParser.TEXT)
domain = xml.getText();
if (cmd.equalsIgnoreCase("metadata"))
type = xml.nextToken();
}
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
return false;
}
public void logout()
{
String xml = buildXML("<logout/>");
sendXML(xml);
}
public void xmlSuccess(KXmlParser xml, Object param) throws Exception
{
int type = xml.nextToken();
while (type != KXmlParser.END_DOCUMENT)
{
int code = Integer.parseInt(xml.getAttributeValue(null, "scode"));
String cmd = xml.getName();
System.out.println(cmd);
if (cmd.equalsIgnoreCase("error"))
System.out.println("An error occured: [" + String.valueOf(code) + "] " + xml.getAttributeValue(null, "msg"));
else if (code != 200)
System.out.println("'" + cmd + "' failed: [" + String.valueOf(code) + "] " + xml.getAttributeValue(null, "msg"));
else if (cmd.equalsIgnoreCase("logout"))
{
sid = "";
domain = "";
username = "";
fullname = "";
}
type = xml.nextToken();
}
}
public void xmlFailure(String error, Object param)
{
}
public void dataSuccess(String data, Object param)
{
}
public void dataFailure(String error, Object param)
{
}
public void dataProgress(int bytesRead, int bytesTotal)
{
}
public void imageSuccess(Image image, Object param)
{
}
public void xmlImageSuccess(Image image, Object param) {
// TODO Auto-generated method stub
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -