处理作为 Android 中浏览器 POST 结果的 MIME 类型
Posted
技术标签:
【中文标题】处理作为 Android 中浏览器 POST 结果的 MIME 类型【英文标题】:Handling MIME type that is the result of a browser POST in Android 【发布时间】:2011-10-16 23:35:30 【问题描述】:我有一个为我感兴趣的 MIME 类型成功调用的 Activity。从服务器发送的内容是作为 POST 的结果创建的 XML 文档。我尝试以两种不同的方式处理结果,但都没有运气:
-
android:mimeType="application/customapp" 这样做,我的活动就会运行,但我从 Intent.getData() 获得的 URI 是用于帖子的 URL。对 getContentResolver().openInputStream() 的调用会导致 java.io.FileNotFoundException: No content provider: http://.... 显然,仅仅点击该 URL 不会像我那样工作'没有发布的数据。
android:pathPattern=".*\custom.app" URL 的最后一段是 custom.app,所以我尝试将它与路径模式一起使用。这样,浏览器尝试下载文档并发生以下两种情况之一:股票浏览器尝试下载“无标题”但失败。 Opera 下载该文档,并按照希望命名,并提供打开该文件的提示,这可以正常工作,但 Opera Mini 只下载该文件。
这是我的清单的相关部分,其中的方案:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".CustomappActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/customapp" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
</activity>
</application>
我想使用第一个选项,但即使它需要 Opera,也可以忍受第二个选项,但前提是它在两个版本的 Opera 中都能一致地工作。我只是看不到为从服务器发送的结果获取输入流的方法。
【问题讨论】:
更新:在股票浏览器场景中,下载管理器因 HTTP 400 错误而中止。浏览器似乎忽略了内容是 POST 的结果这一事实,将 URL 传递出去,然后将其作为简单的 GET 处理。 【参考方案1】:我会回答我自己的问题。显然,我被搞砸了。股票浏览器及其与下载管理器的交互方式存在一个已知问题。此时,它无法检索作为 HTTP POST 结果发送的文档。漏洞详解here
【讨论】:
以上是关于处理作为 Android 中浏览器 POST 结果的 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章
Cordova android 应用程序 - POST 请求返回“禁止访问”错误
ajax post提交到SpringMVC的Controller并将处理结果传递到前台输出总结
对于网页中的form元素,method 属性的get和post有何不同?