То, что вы называете «тип URL», является частью протокола URL, и все, что он делает, это сообщает клиенту, по какому протоколу сервер с этим URL будет ожидать его передачи.
Это НЕ часть «мета-протокола», который позволил бы серверу выяснить URL-адрес, по которому он вызывается, если только вы не используете протокол, который содержит эту информацию в качестве заголовка - что обычно не имеет место. Также обратите внимание, что протоколы обычно подразумевают порт по умолчанию, если в URL-адресе также не указан порт.
Весь API Java URLConnection / URLStreamHandler ориентирован на использование на клиенте, а не на сервере, поэтому я не верю, что его можно использовать так, как вы хотите.
Первые две альтернативы, которые вы придумали, в значительной степени являются вашими вариантами: либо использовать разные порты для разных типов ввода, либо попросите клиентов отправить заголовок, который задает тип ввода, который следует.