首页 > 解决方案 > 响应 URL 正在返回以前的 Imgur 图片 URL 而不是当前图片 URL

问题描述

我已经构建了一个新的 Unity 项目,它使用 C# 和 System.Net 来访问 Imgur 的 API。我可以从任何地方将图像提取到我的应用程序中,并且可以通过我的新应用程序的客户端 ID 将屏幕截图上传到 Imgur。成功上传后,我可以获得相当数量的响应数据,但响应中的 URL 总是过时 1。如果我刚刚上传了屏幕截图 D,我返回的 URL 将链接到屏幕截图 C,依此类推.

以下是响应数据的样子:

在此处输入图像描述

这是我在所有尝试中得到的结果,包括使用w.UploadValuesAsync()和尝试 Imgur 应用程序的匿名和 OAuth2(无回调)版本。

这是我的大部分代码,来自这里

public void UploadThatScreenshot()
{
    StartCoroutine(AppScreenshotUpload());
}

IEnumerator AppScreenshotUpload()
{
    yield return new WaitForEndOfFrame();
    ScreenCapture.CaptureScreenshot(Application.persistentDataPath + filename);

    //Make sure that the file save properly
    float startTime = Time.time;
    while (false == File.Exists(Application.persistentDataPath + filename))
    {
        if (Time.time - startTime > 5.0f)
        {
            yield break;
        }
        yield return null;
    }

    //Read the saved file back into bytes
    byte[] rawImage = File.ReadAllBytes(Application.persistentDataPath + filename);

    //Before we try uploading it to Imgur we need a Server Certificate Validation Callback
    ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback;

    //Attempt to upload the image
    using (var w = new WebClient())
    {
        string clientID = "a95bb1ad4f8bcb8";
        w.Headers.Add("Authorization", "Client-ID " + clientID);
        var values = new NameValueCollection
         {
             { "image", Convert.ToBase64String(rawImage) },
             { "type", "base64" },
         };

        byte[] response = w.UploadValues("https://api.imgur.com/3/image.xml", values);
        string returnResponse = XDocument.Load(new MemoryStream(response)).ToString();

        Debug.Log(returnResponse);
    }
}

为什么我返回的 URLw.UploadValues(...)总是落后一个?

标签: c#imgursystem.net

解决方案


推荐阅读