【问题标题】:Android app getting data from a third-party JSP & ServletAndroid 应用从第三方 JSP 和 Servlet 获取数据
【发布时间】:2012-03-27 16:10:18
【问题描述】:

我正在编写一个应该从某个 Web 应用程序获取数据的 Android 应用程序。该 Web 应用程序基于 Servlet 和 JSP,它不是我的;这是公共图书馆的服务。获取这些数据最优雅的方式是什么?

我尝试编写自己的 Servlet 来处理请求和响应,但我无法让它工作。由于上下文不同,无法进行 Servlet 转发,并且重定向也不起作用,因为它是一种 POST 方法......我的意思是,当然,我可以编写自己的表单来轻松访问库的 servlet,但结果是一个jsp页面..我可以把那个页面变成一个字符串还是什么?不知何故,我认为我不能..我被卡住了。

我可以通过其他方式做到这一点吗?用php还是什么?或者也许在我的网络服务器上获取那个 jsp 页面,然后以某种方式从中提取数据(可能使用 jQuery?)并将其发送到 Android?我真的不想在浏览器中向我的用户显示该 jsp 页面,我想获取该数据并用它创建我自己的对象..

【问题讨论】:

    标签: android jsp servlets


    【解决方案1】:

    只需以编程方式发送 HTTP 请求。您可以为此使用 Android 的内置 HttpClient API。或者,更底层一点,Java 的java.net.URLConnection(另见Using java.net.URLConnection to fire and handle HTTP requests)。两者都能够发送 GET/POST 请求并将响应作为 InputStreambyte[]String 检索回来。

    最简单的,您可以按如下方式执行 GET:

    InputStream responseBody = new URL("http://example.com").openStream();
    // ...
    

    使用 HttpClient 更容易执行 POST:

    List<NameValuePair> params = new ArrayList<NameValuePair>(2);
    params.add(new BasicNameValuePair("name1", "value1"));
    params.add(new BasicNameValuePair("name2", "value2"));
    
    HttpPost post = new HttpPost("http://example.com");
    post.setEntity(new UrlEncodedFormEntity(params));
    
    HttpClient client = new DefaultHttpClient();
    HttpResponse response = client.execute(post);
    InputStream responseBody = response.getEntity().getContent();
    // ...
    

    如果您需要将响应解析为 HTML(但我想知道“公共图书馆服务”(它真的是公共的吗?)并没有真正提供更容易解析的 XML 或 JSON 服务), Jsoup 可能是 jQuery 方式遍历和操作 HTML 的救命稻草。它还支持顺便发送 POST 请求,只是没有 HttpClient 那样细粒度。

    【讨论】:

    • 非常感谢!!我会尝试一下! Jsoup 听起来像是我真正可以使用的东西。 IIRC,我尝试了 HtppClient,无论我尝试什么都没有成功,但那是很久以前的事了,一旦我找到足够的时间,我会再试一次..
    • 哦,我应该从以下位置获取数据:bisis.bgb.rs/index.jsp?locale=en 如您所见,它基本上是该库的搜索引擎,并且不,据我所知,它不提供 XML 或 JSON。它看起来就像一个普通的 servlet 应用程序,没有任何花哨和“现代”的东西,比如为其他应用程序提供数据:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多