尝试在Android上的UnityWebRequest上使用PATCH并获取“不支持的协议”

时间:2016-08-18 17:12:23

标签: android azure unity3d

真的希望有人可以提供协助,我们正在使用Azure移动应用服务,并且在编辑器和IOS上一切正常,我们在尝试更新现有记录时在Android上遇到问题。

根据Azure资源文档,您需要使用Patch

PATCH / tables / tablename /:id更新表中的现有记录

在Android设备上进行测试时,它甚至不会尝试发送网络请求,只会返回错误:"不支持的协议"

研究表明有解决方案,但我没有发现任何与Unity相关的内容。

我在论坛上搜索了HttpMethod.Patch但找不到一篇文章。在理解如何解决问题以及是否有办法在Unity中解决问题时,确实遇到了一些麻烦。

非常感谢任何帮助。

根据在此处找到的Unity文档:https://docs.unity3d.com/Manual/UnityWebRequest.html

,我想我会添加它

5.3支持的平台:

移动平台:iOS,Android,Windows Phone 8

设置HTTP动词(GET,POST,HEAD等)

允许自定义动词(所以我们添加了Patch)

这应该没有问题,但它甚至没有尝试做UnityWebRequest它只返回错误:' Unsupported Protocol'

看到官方文档声明这应该有效,这可能是UnityWebRequest中的错误吗?

提前致谢。

P.S。我们发布了这个  http://answers.unity3d.com/questions/1230067/trying-to-use-patch-on-a-unitywebrequest-on-androi.html我们还没有听到任何理由,这就是我在这里发帖的原因。如果有人知道关于这个话题的任何事情,请说清楚。

3 个答案:

答案 0 :(得分:1)

根据UnityWebRequest的API参考,默认情况下似乎不支持PATCH动词,除了遵循PATCH verb的定义以使用方法PATCH构建请求以及UnityWebRequest中的其他参数。这只是我上面的理解,因为我找不到有UnityWebRequest的PATCH动词的任何信息。

但是,根据问题信息Unity Web Request and Json Utility,您可以尝试使用UnityRestClient代替UnityWebRequest的GitHub project来更新Azure移动应用表记录。

希望它有所帮助。

答案 1 :(得分:1)

Azure SDK for Android使用okHttp库,它支持PATCH。但是,Unity的webrequest使用不支持PATCH的原生Android网络。 刚刚使用Easy API做了一个简单的解决方法:https://github.com/dgkanatsios/AzureServicesForUnity

答案 2 :(得分:0)

一种解决方法是安装“方法覆盖”,该方法适用于Azure App Services(节点后端)。

  1. 运行以下命令,将“方法覆盖”:“^ 2.3.7”添加到“package.json”依赖项中:

    npm install method-override --save

  2. 将以下内容插入“app.js”快递应用配置中(这在[{3}}中有说明)

    var methodOverride = require('method-override');

    然后在行var app = express();之后添加:

    app.use(methodOverride('X-HTTP-Method-Override'))

  3. 现在将更新请求从“PATCH”更改为“POST”并添加标题:

  4. X-HTTP-Method-Override: PATCH

    然后启用x-http方法覆盖标头,并允许您在Android上发送POST请求,这将被视为PATCH请求 - 这将成功处理更新。