there 2 things you mention http client and communication protocol.
Well to design a system you have to consider
1) The communication protocol(s)
and then
2) The client/server software
going for http protocol you have clients(okhttp being one of them) and servers which supports various versions/variants of it suck as the most widely used http 1.1 the 'new' http 2.0, spdy, http streaming etc. If you plan to do messaging/event driven app you may want to try mqtt or WebSockets.
These all can come with some sort of security protocols on top(actually under) of it which may introduce some performance drops. These all also work on top of TCP.
Somebody wrongly compared UDP to HTTP where it is more appropriate to compare TCP_vs_UDP. We have mentioned some drawbacks of UDP however QUIC can handle those.
So there are many options and depends on what you want to do and what you can do.
Coming back to the way you choose seems that to decide about 1) can be difficult.
So what you can do is to decide as good as possible about the protocol(s) you want to use but also choose a 'smart' client which can handle those in case you change your mind, like okhttp or netty. You can also choose something like a modular solution which can plug and play different implementations while your code that makes the calls stays the same(netty can do this also to some extent), like volley or jus (based on volley idea). In that case you stay flexible.
Update: there is also nice info about various protocols in this question