1

我想在 Unity 中使用 UnityWebRequest 进行发布请求。我必须发送 jpg 图像或 png 图像,并且 api 必须以字符串消息或 int 代码响应。

如何编写 C# 脚本通过 post 发送数据?

4

1 回答 1

2

检查一下,我使用这种方法很长时间了,它对我有用。

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);
    }
}

FileDetails这个类只为我保存一些必要的值,比如文件路径、文件名和文件类型。这有点太长了,如果你有什么不明白的,请告诉我。

于 2020-02-12T13:34:15.917 回答