如何使用UnityWebRequest在Unity中编写发送图像文件(.jpg/.png)的HTTP post?
我想使用UnityWebRequest在Unity中执行post请求。我必须发送一个jpg图像或png图像,api必须用字符串消息或int代码进行响应如何使用UnityWebRequest在Unity中编写发送图像文件(.jpg/.png)的HTTP post?,http,unity3d,post,unitywebrequest,Http,Unity3d,Post,Unitywebrequest,我想使用UnityWebRequest在Unity中执行post请求。我必须发送一个jpg图像或png图像,api必须用字符串消息或int代码进行响应 如何编写C#脚本以通过post发送数据?请检查此方法。我使用此方法很长时间了,它对我很有效 public static IEnumerator CallAPIwithPostAndFileData1(string api_url, List<FileDetails> files, Action<string> callba
如何编写C#脚本以通过post发送数据?请检查此方法。我使用此方法很长时间了,它对我很有效
public static IEnumerator CallAPIwithPostAndFileData1(string api_url, List<FileDetails> files, Action<string> callback)
{
WWWForm form = new WWWForm();
int i = 0;
foreach (FileDetails file in files)
{
i++;
UnityWebRequest localFile = UnityWebRequest.Get(@"file://" + file.filePath);
yield return localFile;
form.AddBinaryData("image[]", localFile.downloadHandler.data, file.fileName, "image/" + file.fileType);
}
UnityWebRequest request = UnityWebRequest.Post(api_url, form);
request.SetRequestHeader("Content-Type", "application/json");
request = APIHelper.setAuthToRequest(request, AuthType.BASIC);
request.SendWebRequest();
while (!request.isDone)
{
downloadProgress = request.downloadProgress * 100;
yield return null;
}
if (request.isDone && (!request.isHttpError || !request.isNetworkError))
{
callback(request.downloadHandler.text);
}
else if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
}
public静态IEnumerator CallAPIwithPostAndFileData1(字符串api\u url、列表文件、操作回调)
{
WWWForm form=新WWWForm();
int i=0;
foreach(文件中的文件详细信息文件)
{
i++;
UnityWebRequest localFile=UnityWebRequest.Get(@“file://“+file.filePath);
返回本地文件;
form.AddBinaryData(“image[]”,localFile.downloadHandler.data,file.fileName,“image/”+file.fileType);
}
UnityWebRequest=UnityWebRequest.Post(api\uURL,表单);
SetRequestHeader(“内容类型”、“应用程序/json”);
request=APIHelper.setAuthToRequest(请求,AuthType.BASIC);
request.SendWebRequest();
而(!request.isDone)
{
downloadProgress=request.downloadProgress*100;
收益返回空;
}
if(request.isDone&(!request.isHttpError | | |!request.isNetworkError))
{
回调(request.downloadHandler.text);
}
else if(request.ishttperor | | request.isNetworkError)
{
Debug.LogError(request.error);
}
}
FileDetails
这个类只保存一些必要的值,比如文件路径、文件名和文件类型。它有点太长了,如果你什么都不懂,请告诉我。看看这个,我使用这个方法很长时间了,它对我很有效
public static IEnumerator CallAPIwithPostAndFileData1(string api_url, List<FileDetails> files, Action<string> callback)
{
WWWForm form = new WWWForm();
int i = 0;
foreach (FileDetails file in files)
{
i++;
UnityWebRequest localFile = UnityWebRequest.Get(@"file://" + file.filePath);
yield return localFile;
form.AddBinaryData("image[]", localFile.downloadHandler.data, file.fileName, "image/" + file.fileType);
}
UnityWebRequest request = UnityWebRequest.Post(api_url, form);
request.SetRequestHeader("Content-Type", "application/json");
request = APIHelper.setAuthToRequest(request, AuthType.BASIC);
request.SendWebRequest();
while (!request.isDone)
{
downloadProgress = request.downloadProgress * 100;
yield return null;
}
if (request.isDone && (!request.isHttpError || !request.isNetworkError))
{
callback(request.downloadHandler.text);
}
else if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
}
public静态IEnumerator CallAPIwithPostAndFileData1(字符串api\u url、列表文件、操作回调)
{
WWWForm form=新WWWForm();
int i=0;
foreach(文件中的文件详细信息文件)
{
i++;
UnityWebRequest localFile=UnityWebRequest.Get(@“file://“+file.filePath);
返回本地文件;
form.AddBinaryData(“image[]”,localFile.downloadHandler.data,file.fileName,“image/”+file.fileType);
}
UnityWebRequest=UnityWebRequest.Post(api\uURL,表单);
SetRequestHeader(“内容类型”、“应用程序/json”);
request=APIHelper.setAuthToRequest(请求,AuthType.BASIC);
request.SendWebRequest();
而(!request.isDone)
{
downloadProgress=request.downloadProgress*100;
收益返回空;
}
if(request.isDone&(!request.isHttpError | | |!request.isNetworkError))
{
回调(request.downloadHandler.text);
}
else if(request.ishttperor | | request.isNetworkError)
{
Debug.LogError(request.error);
}
}
FileDetails
这个类只保存一些必要的值,比如文件路径、文件名和文件类型。这有点太长了,如果你什么都不懂,请告诉我。不要使用单个UnityWebRequest
加载本地文件,而应该使用MultipartFormFileSection
内部执行此操作。我将尝试使用此功能。谢谢你们两位!它对我起了作用,从那以后,我再也不看它了@Derhugoin在加载本地文件时,不要使用单独的UnityWebRequest
,而应该使用内部执行此操作的MultipartFormFileSection
,我将对此进行尝试。谢谢你们两位!它对我起了作用,从那以后,我再也不看它了@德胡戈