真的希望有人可以提供协助,我们正在使用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我们还没有听到任何理由,这就是我在这里发帖的原因。如果有人知道关于这个话题的任何事情,请说清楚。
答案 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(节点后端)。
运行以下命令,将“方法覆盖”:“^ 2.3.7”添加到“package.json”依赖项中:
npm install method-override --save
将以下内容插入“app.js”快递应用配置中(这在[{3}}中有说明)
var methodOverride = require('method-override');
然后在行var app = express();
之后添加:
app.use(methodOverride('X-HTTP-Method-Override'))
现在将更新请求从“PATCH”更改为“POST”并添加标题:
X-HTTP-Method-Override: PATCH
然后启用x-http方法覆盖标头,并允许您在Android上发送POST请求,这将被视为PATCH请求 - 这将成功处理更新。