C# UnityWebRequest Post Google Drive API V2错误错误错误请求权限字段 List formData=new List(); 添加(新的MultipartFormDataSection(“角色”、“读取器”); 添加(新的MultipartFormDataSection(“type”、“any”); 字符串url=”https://www.googleapis.com/drive/v2/files/“+fileId+”/permissions”; UnityEngine.Networking.UnityWebRequest请求=UnityEngine.Networking.UnityWebRequest.Post(url,formData); 字符串headerAccessToken=“Bearer”+AccessToken; SetRequestHeader(“授权”,headerAccessToken); SetRequestHeader(“接受”、“应用程序/json”); SetRequestHeader(“内容类型”、“应用程序/json”); 生成返回请求。SendWebRequest(); Log(request.downloadHandler.text); if(request.isNetworkError | | request.isHttpError) { Debug.Log(request.error); } 其他的 { Log(“表单上传完成!”); }

C# UnityWebRequest Post Google Drive API V2错误错误错误请求权限字段 List formData=new List(); 添加(新的MultipartFormDataSection(“角色”、“读取器”); 添加(新的MultipartFormDataSection(“type”、“any”); 字符串url=”https://www.googleapis.com/drive/v2/files/“+fileId+”/permissions”; UnityEngine.Networking.UnityWebRequest请求=UnityEngine.Networking.UnityWebRequest.Post(url,formData); 字符串headerAccessToken=“Bearer”+AccessToken; SetRequestHeader(“授权”,headerAccessToken); SetRequestHeader(“接受”、“应用程序/json”); SetRequestHeader(“内容类型”、“应用程序/json”); 生成返回请求。SendWebRequest(); Log(request.downloadHandler.text); if(request.isNetworkError | | request.isHttpError) { Debug.Log(request.error); } 其他的 { Log(“表单上传完成!”); },c#,unity3d,google-drive-api,unitywebrequest,C#,Unity3d,Google Drive Api,Unitywebrequest,怎么了?我正在使用Google Drive API V2通过UnityWebRequest插入权限。发送PostData“Role:Reader,Type:any”的方法似乎有问题。请帮忙 我试图找到一种方法来改变它,但问题仍然存在。我做错了什么?您已经熟悉使用MultiPartFormDataSection了吗?我不认为这是你想用的,至少是这样。听起来好像它创建了单独的表单,而服务器可能只读取了第一部分。尝试将所有字段放在一个MultiPartFormDataSection中。也就是说,我根

怎么了?我正在使用Google Drive API V2通过UnityWebRequest插入权限。发送PostData“Role:Reader,Type:any”的方法似乎有问题。请帮忙


我试图找到一种方法来改变它,但问题仍然存在。我做错了什么?

您已经熟悉使用MultiPartFormDataSection了吗?我不认为这是你想用的,至少是这样。听起来好像它创建了单独的表单,而服务器可能只读取了第一部分。尝试将所有字段放在一个MultiPartFormDataSection中。也就是说,我根本不知道Unity API。@Crowcoder我什么都不知道。只是寻找目的。谢谢你的回答作为线索。request.SetRequestHeader(“内容类型”、“应用程序/json”);我想我需要将formData更改为json格式。谢谢。是的,如果API需要json,你不应该发送表单数据。
    List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
    formData.Add(new MultipartFormDataSection("role", "reader"));
    formData.Add(new MultipartFormDataSection("type", "anyone"));

    string url = "https://www.googleapis.com/drive/v2/files/" + fileId + "/permissions";
    UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.Post(url, formData);

    string headerAccessToken = "Bearer " + AccessToken;
    request.SetRequestHeader("Authorization", headerAccessToken);
    request.SetRequestHeader("Accept", "application / json");
    request.SetRequestHeader("Content-Type", "application / json");

    yield return request.SendWebRequest();
    Debug.Log(request.downloadHandler.text);

    if (request.isNetworkError || request.isHttpError)
    {
        Debug.Log(request.error);
    }
    else
    {
        Debug.Log("Form upload complete!");
    }
    string url = "https://www.googleapis.com/drive/v2/files/" + fileId + "/permissions";
    string bodyJsonString = "\"resource\" : { \"role\" : \"reader\" , \"type\" : \"anyone\" }";
    //string bodyJsonString = "{ \"role\" : \"reader\" , \"type\" : \"anyone\" }";
    var request = new UnityEngine.Networking.UnityWebRequest(url, "POST");
    byte[] bodyRaw = Encoding.UTF8.GetBytes(bodyJsonString);
    request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
    request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
    request.SetRequestHeader("Authorization", "Bearer " + AccessToken);
    request.SetRequestHeader("Accept", "application / json");
    request.SetRequestHeader("Content-Type", "application / json");

    yield return request.SendWebRequest();
    //yield return request.Send();
    Debug.Log(request.downloadHandler.text);

    if (request.isNetworkError || request.isHttpError)
    {
        Debug.Log(request.error);
    }
    else
    {
        Debug.Log("Form upload complete!");
    }