Alternatively, you could use a regex match:
zsh% [[ $h =~ ^(https?://[^/]*) ]]
zsh% print $match[1]
I don't think there's a solution using builtins that doesn't require two lines of code, though I could be wrong.
You could always use an external program instead of zsh builtins. Here are a couple other regex-based solutions:
zsh% grep -o '^https\?://[^/]*' <<<"$h"
zsh% sed -nE 's,^(https?://[^/]*).*$,\1,p' <<<"$h"
And one that does a similar split/join thing as my last message:
zsh% awk -v{,O}FS=/ '{print $1,$2,$3}' <<<"$h"