在這裡,我所使用的是網易有道的介面,把** + 要查詢的身份證號,貼上到瀏覽器上開啟,可以看到返回的是乙個表示結果的xml檔案。目前未發現使用限制。
首先在瀏覽器 上測試乙個有效的身份證號,檢視原始檔,可以看到返回的資訊中,有四個元素是我們需要的,即code身份證號碼,location身份證發證地,birthday生日,gender性別。再試一下查詢無效的身份證號,只有乙個<
smartresult
/>。
建立乙個類,表示身份證資訊,內容如下(get及set方法省略),為方便測試,還得覆寫tostring方法,將所有內容列印出來:
public class idcard
smartresult
>。實現的**如下:
/**
* 根據身份證號查詢相關資訊。
* * @param id
* 身份證號
*/public idcard query(string id) catch (malformedurlexception e) catch (ioexception e)
if ( info == null || info.contains(""))
// system.out.println(info);
idcard idcard = par***ml(info);
// system.out.println(idcard);
return idcard;
}
/**
* 根據url名得到輸入流。
* * @param urlstr
* url名。
* * @return 得到的輸入流。
* * @throws malformedurlexception
* 如果字串指定未知協議。
* @throws ioexception
* 如果發生 i/o 錯誤。
*/private string getstringfromurl(string urlstr, string charsetname) throws malformedurlexception, ioexception
在上面的方法中,得到的是inputstream型別的物件,還需要轉換成string型別。這個可以在網上找,**如下:
/**
* 將inputstream轉換成string
* @param urlstr
* @param charsetname 字符集名
* @return
*/private string inputstreamtostring ( inputstream in, string charsetname)
stringbuilder sb = new stringbuilder();
string temp = null;
try
} catch (ioexception e)
return sb.tostring();
}
到這裡,我們已經能得到乙個string型別的結果了。下面將對這個結果進行解析。由於內容較簡單,也可對結果用正規表示式提取資料。我這裡用到的是xmlreader類,來解析xml檔案。用這種方法,需要實現contenthandler介面。下面的**中,是通過繼承defaulthandler類並重寫裡面的方法來實現的。
public class mycontenthandler extends defaulthandler
@override
public void characters(char ch, int start, int length)
throws saxexception else if (tagname.equals("location")) else if (tagname.equals("birthday")) else if (tagname.equals("gender"))
} @override
public void enddocument() throws saxexception
@override
public void endelement(string uri, string localname, string qname)
throws saxexception
@override
public void startdocument() throws saxexception
@override
public void startelement(string uri, string localname, string qname,
attributes attributes) throws saxexception
// system.out.println("uri:" + uri + ", localname:" + localname + ", qname:" + qname);
} public idcard getidcard()
}
this.tagname = localname;
if ("".equals(localname))
看起來貌似很麻煩。這個也是我一時想到的。我在使用的時候悲劇地發現,第一次使用時讀到的如code等元素,是賦值在qname中的,但是移植到android中時,貌似卻是讀到localname的,又不知它會不會變成賦值到qname中去,只好用這個方法了。
實現了contenthandler之後,下面對其使用的**如下:
/**
* 得析得到的xml字串的資訊
* @param info
* @return
*/private idcard par***ml(string info) catch (exception e)
return idcard;
}
這樣就得到了idcard物件了。
以上內容中,如果有問題,或有更好的實現方法,還望大家指教。我是菜鳥。
讀取身份證資訊 php 讀取身份證資訊
namespace class identitycardservice 獲取位址 public function get addr id 根據身份證號,自動返回對應的星座 param cid return string public function getstarsign cid elseif m...
VUE實現華視身份證閱讀器讀取身份證資訊
這是模板 直接放在之間就可以。title visible.sync open width 10 class mb8 1.5 type success icon el icon plus size mini click connect 連線 el button el col 1.5 type warn...
實名驗證身份證資訊
php函式實現了乙個實名驗證身份證的資訊 如下 實名認證身份證號資訊 public function iscreditno vstr 函式名 iscreditno,引數 vstr,表示傳入的身份證號碼 xx d d vstr return false 如果出現17個數字加乙個 x 或 x 以及乙個數...