【问题标题】:Android - Read an XML file with HTTP GETAndroid - 使用 HTTP GET 读取 XML 文件
【发布时间】:2010-08-03 09:21:50
【问题描述】:

我需要探索我的项目在 Android 上使用 Web 服务。我知道没有官方的 XML 库 - RPC Web 服务。

但是有 REST XML,我需要对其进行测试。

我想通过 HTTP GET 从 Android 读取我的网页上的 XML(我必须在其中传递用户名和密码)。

假设,我关注 This link,那么我在哪里传递用户名和密码?

谁能帮帮我。

【问题讨论】:

  • 用户名和密码怎么填?如果是 HTTP Basic Auth,那么 HttpClient 库支持它,您可以添加到 Gianni 的代码中。

标签: android xml get


【解决方案1】:
HttpGet uri = new HttpGet("http://example.com");    

DefaultHttpClient client = new DefaultHttpClient();
HttpResponse resp = client.execute(uri);

StatusLine status = resp.getStatusLine();
if (status.getStatusCode() != 200) {
    Log.d(tag, "HTTP error, invalid server status code: " + resp.getStatusLine());  
}

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(resp.getEntity().getContent());

【讨论】:

  • 别忘了关闭你的 HTTP 请求! resp.getEntity().consumeContent() - 只需要在 XML 解析没有完全读取文件的情况下执行此操作,因此在某种形式的 finally 块中。
  • 只需添加这一行来传递“用户名”和“密码”: httpclient.getCredentialsProvider().setCredentials( new AuthScope(null, -1), new UsernamePasswordCredentials("username", "password") );
  • 应该是? => if (status.getStatusCode() != 200) {
  • 供以后参考:uri 对象可以构造如下:new HttpGet("http://example.com")
  • StatusLine.getStatusCode() 返回 int,不应与 String 比较。
【解决方案2】:

此链接帮助我开始了解如何使用 SAX 解析器进行 HTTP GET XML 和解析。

http://www.anddev.org/parsing_xml_from_the_net_-_using_the_saxparser-t353.html

希望这会有所帮助,

iTom

【讨论】:

  • @iTom ...我已经阅读了这篇文章....但是我如何传递“用户名”和“密码”值.....顺便说一句,谢谢
  • 对于 GET 请求,表单值通常附加到 URI 请求而不是发布,即 example.com/… 希望对您有所帮助,iTom
  • 哦,如果您使用了为 GET 请求构建 URI 的函数,那么这篇文章也可能会有所帮助.. anddev.org/doing_http_post_with_android-t492.html
  • Hey Paresh 请解释发生了什么您收到错误消息了吗?还是什么都没有退回?
【解决方案3】:

HTTP Basic Auth 的几行代码,如果你是这个意思的话。

String auth = Base64Converter.encode(String.format("%s:%s", user, pass));
URL u = new URL(url);
conn = (HttpsURLConnection) u.openConnection();
conn.addRequestProperty("Authorization", "Basic " + auth);

“Base64Converter”是一个实用程序类,用于将字符串转换为其 Base64 编译形式。 在 parsingxml.java 中的 openConnection() 调用之前执行此操作,第 36 行。

【讨论】:

  • 我认为这对我有帮助...让我试试...如果运行请回复您..thanx 的支持
  • Base64Converter 在 Android 中不受支持。在 Base64Converter 下显示红线(错误)
  • @Paresh 是的 Base64Converter 是我在其他地方找到的公共领域实用程序类。谷歌搜索可能会为您找到正确的地方。 Android 本应提供 Base64 编码器/解码器类,但实际上对应用程序开发人员不可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 2012-09-09
相关资源
最近更新 更多