RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 881949
Accepted
deced
deced
Asked:2020-09-16 22:46:59 +0000 UTC2020-09-16 22:46:59 +0000 UTC 2020-09-16 22:46:59 +0000 UTC

通过 VkNet 从 VK 对话框下载图像

  • 772

您需要从 VKontakte 对话框下载图像。
对话是用户和社区之间的,我们作为一个社区来行动。

使用令牌登录

var api = new VkApi();
api.Authorize(new ApiAuthParams
{
    AccessToken = "мой_токен",

});

我们收到未答复的社区对话:

var messagesGet = api.Messages.GetDialogs(new MessagesDialogsGetParams
{
    Count = 200,
    Unanswered = true
});

我们得到所有附件的列表(邮件附加的照片):

MessagesGetHistoryAttachmentsParams attachmentsParams = new MessagesGetHistoryAttachmentsParams();
attachmentsParams.MediaType = VkNet.Enums.SafetyEnums.MediaType.Photo;
foreach (var mes in messagesGet.Messages)
{
    string str;
    attachmentsParams.PeerId = 291249709;
    List<HistoryAttachment>attachments =api.Messages.GetHistoryAttachments(attachmentsParams, out str).ToList();  
    foreach(HistoryAttachment attachment in attachments)
    {
        WebClient webClient = new WebClient();
        Photo photo = (Photo)attachment.Attachment.Instance;
        MessageBox.Show(photo.BigPhotoSrc.ToString()); //на этой строке получаем ошибку System.NullReferenceException
    }  
}

在尝试获取图像链接以供进一步下载 ( photo.BigPhotoSrc.ToString()) 时,我们收到以下文本的异常:

System.NullReferenceException:“对象引用未指向对象的实例。” VkNet.Model.Attachments.Photo.BigPhotoSrc.get返回null。

通过调试器,我设法发现许多 Photo 字段被定义为 null,尤其是我请求的 PhotoSrc

如何解决这个问题?

c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    EvgeniyZ
    2020-09-17T00:23:09Z2020-09-17T00:23:09Z

    从5.77 版本开始,API 改变了照片对象的形式,服务器不返回诸如photo_***. 图像的所有大小和地址仍然可以从数组中sizes获取,我们可以通过type的值从中获取所需的大小。

    我们可以通过开发站点发送请求来查看服务器发送给我们的内容。
    响应将是这样的 JSON:

    {
      "response": {
        "items": [
          {
            "message_id": 1234567,
            "attachment": {
              "type": "photo",
              "photo": {
                "id": 456287182,
                "album_id": 123,
                "owner_id": 123456,
                "user_id": 1234567,
                "sizes": [
                  {
                    "type": "m",
                    "url": "https://sun1-2.us...160/6BPQrmj9Nh4.jpg",
                    "width": 130,
                    "height": 77
                  },
                  {
                    "type": "o",
                    "url": "https://sun1-12.u...165/KiMroLu-9A8.jpg",
                    "width": 130,
                    "height": 87
                  },
                  {
                    "type": "p",
                    "url": "https://sun1-14.u...166/E5bfvlBnLCk.jpg",
                    "width": 200,
                    "height": 133
                  }
                ],
                "text": "",
                "date": 123456789,
                "access_key": "********"
              }
            }
          }
        ],
        "next_from": "123456/1"
      }
    }
    

    如您所见,服务器并没有回馈给我们photo_***,而是sizes当场回馈!


    我还想指出,您使用的messages.getDialogs方法自5.80 版以来已被弃用!我建议您切换到较新的messages.getConversations方法。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5