Начал писать комментарий про вот уже скоро 20 лет существования http/1.1, но впрочем всё чуть проще:
https://tools.ietf.org/html/rfc2616#section-14.23A client MUST include a Host header field in all HTTP/1.1 request messages
Вы грубо нарушили стандарт. Вы представились как HTTP/1.1 клиент, но не передали требуемый для этого стандарта заголовок Host.
Некорректный запрос клиента - это код 400, сервер вам отвечает корректно.
Минимально возможный запрос для HTTP/1.1 - это две строки:
GET /... HTTP/1.1
Host: api.vk.com
Возможно потребуются ещё какие-нибудь заголовки, но это уже по необходимости. Браузеры типично отправляют много дополнительных заголовков.
Одна строка была давным-давно допустима для HTTP/1.0, где на одном IP мог быть максимум 1 сайт. Большинство современных серверов вас выслушают по HTTP/1.0 но вряд ли вернут то что вы хотите, т.к. не будут знать, о каком домене вы спрашиваете и соответственно какому обработчику передавать запрос.