получение XML из сети за аутентификацией - PullRequest
0 голосов
/ 27 января 2012

снова я, извините:)

Я использовал dom parser, чтобы получить xml из Интернета, проанализировать его и поместить данные в db ... все было хорошо, но я поставил базовую аутентификацию для папки, где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());
        }
});

из того, что я просматривал на этом форуме, и Google ... но пока не повезло, я не так хорошо понимаю Java (все еще учусь), как сделатьЯ делаю это ?Я имею в виду, как я могу получить xml после аутентификации в парсер, я закончил с потоком и парсер хочет строку ...

Я знаю, что, возможно, не имеет особого смысла:)

Влад.

1 Ответ

3 голосов
/ 28 января 2012

Я сделал это!Потребовалось около 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);
}

Работая до сих пор, это не лучшее решение, я думаю, но эй!его работа:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...