2012-01-27 53 views
0

我了,不好意思:)獲取XML從網絡背後認證

我使用DOM解析器從網絡獲取XML和分析它,並把數據放到數據庫..一切都很好,很正常,但不是我把基本身份驗證文件夾中的XML是網頁...

之前,它的工作是這樣的:

final String URL = getString(R.string.url); 

// XML node keys 
final String KEY_ITEM = "plan"; // parent node 
final String KEY_NAME = "agent"; 
final String KEY_DATE = "date"; 
final String KEY_SHIFT = "shift"; 
final String KEY_LINE = "line"; 

XMLhandler parser = new XMLhandler(); 
String xml = parser.getXmlFromUrl(URL); // getting XML 
Document doc = parser.getDomElement(xml); // getting DOM element 

NodeList nl = doc.getElementsByTagName(KEY_ITEM); 

// empty table 
db.dropData("plan"); 


for (int i = 0; i < nl.getLength(); i++) { 
Element e = (Element) nl.item(i); 
String name = parser.getValue(e, KEY_NAME); 
String date = parser.getValue(e, KEY_DATE); 
String shift = parser.getValue(e, KEY_SHIFT); 
String line = parser.getValue(e, KEY_LINE); 
db.createList(name, date, shift, line); // add to db 

} 

如何實現身份驗證呢?我知道我應該使用類似:

Authenticator.setDefault(new Authenticator() { 
@Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(
    "user", "password".toCharArray()); 
     } 
}); 

從我一直在尋找在這個論壇和谷歌......但至今沒有運氣,我不懂java的那麼好(仍在學習),我該怎麼辦它呢?我的意思是我怎麼得到驗證XML解析器來後,我結束了流解析器想串...

我知道我可能不會作出太大的意義:)

弗拉德。

回答

3

我已經做到了!花了大約4個小時來學習它和數字出來..很多很多的谷歌搜索:d

但這裏是我是如何做到的,也許有人也可以使用它:

URI lUri = new URI(getString(R.string.url)); //get url from strings 

// XML node keys 
final String KEY_ITEM = "plan"; // parent node 
final String KEY_NAME = "agent"; 
final String KEY_DATE = "date"; 
final String KEY_SHIFT = "shift"; 
final String KEY_LINE = "line"; 

XMLhandler parser = new XMLhandler(); 

// Prepares the request 
HttpClient lHttpClient = new DefaultHttpClient(); 
HttpGet lHttpGet = new HttpGet(); 
lHttpGet.setURI(lUri); 
lHttpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("user", "pass"), "UTF-8", false)); 

// Sends the request and read the response 
HttpResponse lHttpResponse = lHttpClient.execute(lHttpGet); 
InputStream lInputStream = lHttpResponse.getEntity().getContent(); 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document dom = builder.parse(lInputStream); 

Element root = dom.getDocumentElement(); 
NodeList nl = root.getElementsByTagName(KEY_ITEM); 

// pass data to another function... 
for (int i = 0; i < nl.getLength(); i++) { 
    Element e = (Element) nl.item(i); 
    String name = parser.getValue(e, KEY_NAME); 
    String date = parser.getValue(e, KEY_DATE); 
    String shift = parser.getValue(e, KEY_SHIFT); 
    String line = parser.getValue(e, KEY_LINE); 
    db.createList(name, date, shift, line); 
} 

至今工作,它不是我猜想的最好的解決方案,但嘿!其工作:)