Unity3D中如何使用PUT方式更新用户图片
How to update user picture using PUT method in Unity3D
我是Unity3D的初学者;我必须开发一个移动应用程序,我需要管理用户配置文件数据;我必须使用 REST 服务将这些数据与服务器通信。
当我从我的应用程序发送 Json(例如姓名、电子邮件、phone 号码等)时一切正常,但我无法更新个人资料图片。
我需要的是:
内容类型 = multipart/form-data
key="profile_picture", value=file_to_upload (不是路径)
我阅读了很多有关 Unity 网络的文章,并尝试了 UnityWebRequest、List、WWWform 的不同组合,但似乎对这种 PUT 服务没有任何作用。
UnityWebRequest www = new UnityWebRequest(URL + user.email, "PUT");
www.SetRequestHeader("Content-Type", "multipart/form-data");
www.SetRequestHeader("AUTHORIZATION", authorization);
//i think here i'm missing the correct way to set up the content
我可以正确模拟Postman的更新,所以不是服务器的问题;我很确定问题是我无法在应用程序内部转换此逻辑。
从 Postman 正常上传(1)
从 Postman 正常上传(2)
我们将不胜感激任何类型的帮助和代码建议。
谢谢
使用Put你通常只发送文件数据而没有表格。
您可以使用 UnityWebRequest.Post
添加多部分表单
IEnumerator Upload()
{
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormFileSection("profile_picture", byte[], "example.png", "image/png"));
UnityWebRequest www = UnityWebRequest.Post(url, formData);
// change the method name
www.method = "PUT";
yield return www.SendWebRequest();
if(www.error)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
或者您可以使用 WWWForm
IEnumerator Upload()
{
WWWForm form = new WWWForm();
form.AddBinaryData("profile_picture", bytes, "filename.png", "image/png");
// Upload via post request
var www = UnityWebRequest.Post(screenShotURL, form);
// change the method name
www.method = "PUT";
yield return www.SendWebRequest();
if (www.error)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Finished Uploading Screenshot");
}
}
请注意,对于用户身份验证,您必须正确编码您的凭据:
string authenticate(string username, string password)
{
string auth = username + ":" + password;
auth = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(auth));
auth = "Basic " + auth;
return auth;
}
www.SetRequestHeader("AUTHORIZATION", authenticate("user", "password"));
()
我是Unity3D的初学者;我必须开发一个移动应用程序,我需要管理用户配置文件数据;我必须使用 REST 服务将这些数据与服务器通信。 当我从我的应用程序发送 Json(例如姓名、电子邮件、phone 号码等)时一切正常,但我无法更新个人资料图片。
我需要的是: 内容类型 = multipart/form-data key="profile_picture", value=file_to_upload (不是路径)
我阅读了很多有关 Unity 网络的文章,并尝试了 UnityWebRequest、List、WWWform 的不同组合,但似乎对这种 PUT 服务没有任何作用。
UnityWebRequest www = new UnityWebRequest(URL + user.email, "PUT");
www.SetRequestHeader("Content-Type", "multipart/form-data");
www.SetRequestHeader("AUTHORIZATION", authorization);
//i think here i'm missing the correct way to set up the content
我可以正确模拟Postman的更新,所以不是服务器的问题;我很确定问题是我无法在应用程序内部转换此逻辑。
从 Postman 正常上传(1)
从 Postman 正常上传(2)
我们将不胜感激任何类型的帮助和代码建议。 谢谢
使用Put你通常只发送文件数据而没有表格。
您可以使用 UnityWebRequest.Post
添加多部分表单IEnumerator Upload()
{
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormFileSection("profile_picture", byte[], "example.png", "image/png"));
UnityWebRequest www = UnityWebRequest.Post(url, formData);
// change the method name
www.method = "PUT";
yield return www.SendWebRequest();
if(www.error)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
或者您可以使用 WWWForm
IEnumerator Upload()
{
WWWForm form = new WWWForm();
form.AddBinaryData("profile_picture", bytes, "filename.png", "image/png");
// Upload via post request
var www = UnityWebRequest.Post(screenShotURL, form);
// change the method name
www.method = "PUT";
yield return www.SendWebRequest();
if (www.error)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Finished Uploading Screenshot");
}
}
请注意,对于用户身份验证,您必须正确编码您的凭据:
string authenticate(string username, string password)
{
string auth = username + ":" + password;
auth = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(auth));
auth = "Basic " + auth;
return auth;
}
www.SetRequestHeader("AUTHORIZATION", authenticate("user", "password"));
(