这个是服务器给我返回的ip,这个ip是动态的,每次都不一样,是服务器动态调度的,这样能保证子服务器压力适度,不会导致堵死。
<?xml version="1.0" encoding="utf-8"?>
<ebook><get_ds><res stat="ok"><ip>110.110.110.110</ip><port>8888</port></res></get_ds></ebook>
--------------------------------------------------------------------------------------
如果服务器不能调度, 它会返回错误信息:
<?xml version="1.0" encoding="utf8" ?>
<ebook>
<get_ds>
<res stat="fail">
<err code="错误码" desc="错误描述" />
</res>
<get_ds>
</ebook>
----------------------------------------------------------------------------------
这个是解析方法:
//参数content是服务器返回的xml
//函数返回值是解析出来的ip地址,如果服务器返回的是错误信息,那么,这个函数的返回值为空。
public static String parseDispatchIport(String content){
String address = null;
String name;
try {
KXmlParser kparser=new KXmlParser();
kparser.setInput(new ByteArrayInputStream(content.getBytes("UTF-8")),"UTF-8");
kparser.nextTag();
kparser.require(KXmlParser.START_TAG, null, "ebook");
kparser.nextTag();
kparser.require(KXmlParser.START_TAG, null, null);
kparser.nextTag();
kparser.require(KXmlParser.START_TAG, null, "res");
String res=kparser.getAttributeValue(0).toLowerCase();
if(res.equals("ok")){
String ip=null,port=null;
while(kparser.nextTag()!=KXmlParser.END_TAG){
kparser.require(KXmlParser.START_TAG, null, null);
name=kparser.getName().trim();
if(name.equals("ip")){
if (kparser.next() == KXmlParser.TEXT) {
ip = kparser.getText();
nextEndTag(kparser, false, name);
}
}else if(name.equals("port")){
if (kparser.next() == KXmlParser.TEXT) {
port = kparser.getText();
nextEndTag(kparser, false, name);
}
}else{
kparser.skipSubTree();
}
}
address=ip+":"+port;
}else if(res.equals("fail")){
while(kparser.nextTag()!=KXmlParser.END_TAG){
kparser.require(KXmlParser.START_TAG, null, null);
name=kparser.getName();
if(name.equals("err")){//当服务器返回错误信息时, 调用外部的一个方法,将错误码告诉外面。(这样写不太好,增加了耦合度)
String errCode=kparser.getAttributeValue(0);
String errDiscription=kparser.getAttributeValue(1);
Main.mainTable.commendForm.setErrDiscription(errCode, errDiscription);
nextEndTag(kparser, false, name);
}else{
kparser.skipSubTree();
}
}
}else{
}
kparser.require(KXmlParser.END_TAG, null, "res");
}catch(Exception e){
address = null;
}
return address;
}
作者:丫鞋带儿开了