我正在尝试将数据上传到Azure门户上的blob服务。
我一直在尝试使用此页面:https://msdn.microsoft.com/library/azure/dd179451.aspx
我的代码如下:
IEnumerator SetItem ()
{
DataJson data = new DataJson("Amy", "201289");
string json = JsonUtility.ToJson(data);
UnityWebRequest newWWW = UnityWebRequest.Put(
"https://compstorage.blob.core.windows.net/folderName/item", json);
yield return newWWW.Send();
if (newWWW.isError == false)
{
Debug.Log("Form upload complete!");
}
UnityWebRequest www = UnityWebRequest.Get("compstorage.blob.core.windows.net/folderName/item.json");
yield return www.Send();
string text = System.Text.Encoding.UTF8.GetString(www.downloadHandler.data);
DataJson newData = JsonUtility.FromJson<DataJson>(text);
Debug.Log(newData.ToString());
}
blob设置为Blob,表示读取,写入权限。我尝试了各种变体,如添加/删除文件扩展名,还添加了SaS密钥,但它永远不会更新服务器内容,尽管Put请求声称成功。 Get请求可以正常工作,但会打印旧版本的数据,而不是更新的数据。
有没有人知道在Unity中使用Put请求的方法
答案 0 :(得分:0)
无法说明原因,但您可以使用this插件与Azure服务进行通信。它会解决你的问题。
修改强>:
在阅读您发布的MS链接后,问题是您缺少几个标题:
请理解有blob的类型。您没有提到您正在制作的blob请求的类型。请再次查看link以查看每个blob需要哪些额外标头。如果它说&#34;必要&#34;在描述中,您必须将其包含在请求中。如果它说&#34;可选&#34;。
,你就不需要它如何在UnityWebRequest
中添加标题?
UnityWebRequest newWWW = UnityWebRequest.Put("https://compstorage.blob.core.windows.net/folderName/item", json);
newWWW.SetRequestHeader("Authorization","your Authorization");
newWWW.SetRequestHeader("x-ms-version","v1");
newWWW.SetRequestHeader("x-ms-blob-type","BlockBlob");
newWWW.SetRequestHeader("x-ms-date","Your Datte");
不要担心Content-Length
和Date
标题,因为Unity会自动为您生成标题。不允许您使用UnityWebRequest
手动设置它们。查看here以获取授权标题的内容。