Auch in Java sollte es Funktionen wie Url.Encode(), Url.Decode() geben, die eben einen Web-Url automtisch umwandeln. Beim Encode automatisch alles was als Web-Adresse erscheinen könnte in %xx, beim Decode dann entsprechend zurück.
Manuell ist das deshalb erforderlich, da jedes Element explizit encoded werden muss.

Z.B. www.mywebapi.de/function?p1=bala/bala&p2=blabla

Machst du einen Encode über alles werden /.?=& alle in %xx gewandelt, was dann keine Url ergibt.
Du benötigs also einen Encode nur für "bala/bala".
Ich habe mir das angewöhnt für alle Parameterwerte einen Encode aufzurufen.

Leider wird das nicht automtisch gemacht sondern der Absender muss es aktiv tun, der Web-Server muss es ebenso tun. Wobei in .Net eine Lib-Funktion zum Trennen der Url von den Query-Parametern und Splitten in Key-Value-Pairs vorhanden ist.