public String toXML(){
String ret = "";
ret += writeString("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
ret += writeString("<soap:Envelope xmlns:xsi="+quote("http://www.w3.org/2001/XMLSchema-instance")+" xmlns:xsd="+quote("http://www.w3.org/2001/XMLSchema")+" xmlns:soap="+quote("http://schemas.xmlsoap.org/soap/envelope/")+">");
ret += writeString(" <soap:Body>");
ret += writeString(" <SearchNews xmlns="+quote("http://tempuri.org/")+">");
ret += writeString(" <Server>"+server+"</Server>");
ret += writeString(" <Start>"+toSOAPDate()+"</Start>");
ret += writeString(" <Count>"+count+"</Count>");
ret += writeString(" <Hash>"+getHash()+"</Hash>");
ret += writeString(" </SearchNews>");
ret += writeString(" </soap:Body> ");
ret += writeString("</soap:Envelope>");
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;
}