⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 session.java.svn-base

📁 利用J2ME编写的手机应用程序。 功能包括显示图片
💻 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 + -