public String toXML(){ String ret = ""; ret += writeString(""); ret += writeString(""); ret += writeString(" "); ret += writeString(" "); ret += writeString(" "+server+""); ret += writeString(" "+toSOAPDate()+""); ret += writeString(" "+count+""); ret += writeString(" "+getHash()+""); ret += writeString(" "); ret += writeString(" "); ret += writeString(""); return ret; } private String getHash(){ String in = SECRET; in += SD; in += toASPDate(); in += SD; in += getCount(); in += SD; try{ MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.reset(); md5.update(in.getBytes()); return toHexString(md5.digest()); }catch(NoSuchAlgorithmException e){ throw new RuntimeException("No md5"); } } private static final String HEX_DIGITS = "0123456789abcdef"; private static String toHexString(byte[] v) { StringBuffer sb = new StringBuffer(v.length * 2); for (int i = 0; i < v.length; i++) { int b = v[i] & 0xFF; sb.append(HEX_DIGITS.charAt(b >>> 4)); sb.append(HEX_DIGITS.charAt(b & 0xF)); } return sb.toString(); } protected String toSOAPDate(long aDate){ String ret = ""; Date d = new Date(aDate); ret += NumberUtils.itoa(d.getYear(),4); ret += "-"; ret += NumberUtils.itoa(d.getMonth(), 2); ret += "-"; ret += NumberUtils.itoa(d.getDay(), 2); /*ret += " "; ret += NumberUtils.itoa(d.getHour(), 2); ret += ":"; ret += NumberUtils.itoa(d.getMin(), 2);*/ return ret; } protected String toSOAPDate(){ return toSOAPDate(date); } protected String toASPDate(){ return toASPDate(date); } //"2007-05-10 12:41:08Z" protected static String toASPDate(long aDate){ String ret = ""; Date d = new Date(aDate); ret += NumberUtils.itoa(d.getYear(),4); ret += "-"; ret += NumberUtils.itoa(d.getMonth(), 2); ret += "-"; ret += NumberUtils.itoa(d.getDay(), 2); ret += " "; ret += NumberUtils.itoa(0/*d.getHour()*/, 2); ret += ":"; ret += NumberUtils.itoa(0/*d.getMin()*/, 2); ret += ":"; ret += NumberUtils.itoa(0, 2); ret += "Z"; return ret; }