If you are using Java, I recommend the native Java APIs as it's more flexible and give you more control.
However, WebHDFS is better if you don't want to involve dozens of libraries required by Hadoop. It decouples your application and Hadoop. Of course, you need pay a little performance cost due to HTTP.