【问题标题】:How to intercept http POST data from web form如何从 Web 表单中拦截 http POST 数据
【发布时间】:2012-05-15 09:43:36
【问题描述】:

我有一个网页(显示在浏览器中,不是 WebView),我想将一些数据(例如使用 http POST)传递给常规的 android 应用程序。

我只需要启动应用程序并提供数据。我知道可以通过注册意图过滤器来启动应用程序,但我在数据传递部分迷失了。

网址不需要是真的,假网址就可以了。

这可以在 BlackBerry 中使用 HTTP 过滤器完成。有没有办法在 Android 中做同样的事情?

提前致谢。

【问题讨论】:

标签: android http browser intercept


【解决方案1】:

在您的网页中放置如下链接:

<a href="my.special.scheme://xyz.com/data1/data2">

在您的活动的onCreate() 中,您可以通过意图对象访问数据..

Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "xyz.com"
List<String> params = data.getPathSegments(); 
String first = params.get(0); // "data1"
String second = params.get(1); // "data2"

【讨论】:

    【解决方案2】:

    我将研究的方法是在您的应用程序中实现一个非常简单的 HTTP 服务器服务。为您的确切目的编写一个小型 Web 服务器将非常简单:侦听 TCP 端口 80,接受传入连接,然后继续从套接字读取,直到看到 \r\n\r\n 跳过标头,然后读取 POST 数据。您的网页可能会通过“localhost”访问它。我不知道这种方法是否有任何重大障碍,但通过快速搜索,我发现已经有小型 Android 网络服务器可用,所以从技术上讲这似乎是可行的。

    【讨论】:

    • 嗯,但该服务很适合被操作系统停止。
    【解决方案3】:

    这是我的两分钱:

    虽然实际上并没有拦截,但这种方法使用传统的 Intent Filter 机制完成了工作。

    例子:

    1. 浏览器打开指向 myownscheme://myfakeurl.fake/http%3A%2F%2Factualurl.com 的链接
    2. Android 应用程序匹配意图过滤器并启动。它解析 URL 中的参数并对其进行解码,从而获得“http://actualurl.com”
    3. android 应用与传递的 url 建立连接并获取数据。

          String encodedURL = getIntent().getData().getPathSegments().get(0); //Returns http%3A%2F%2Factualurl.com
          String targetURL = Html.fromHtml(encodedURL); //Returns http://actualurl.com
          //Now do the GET and fetch the data.
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 2018-07-08
      • 2011-04-09
      • 2023-03-13
      • 2017-10-04
      相关资源
      最近更新 更多