2012-11-20 6 views
5

Sto cercando di ripulire il mio ambiente di build e ho scoperto un paio di avvertenze riportate sull'uso delle API proprietarie di Sun.Creazione di avvisi relativi all'utilizzo dell'API Sun proprietaria

[javac] /workspace/<path-to-files>/Handler.java:18: warning: sun.net.www.protocol.http.Handler is Sun proprietary API and may be removed in a future release 
[javac] public class Handler extends sun.net.www.protocol.http.Handler { 
[javac]              ^
[javac] /workspace/<path-to-files>/HttpClient.java:16: warning: sun.net.www.http.HttpClient is Sun proprietary API and may be removed in a future release 
[javac] public class HttpClient extends sun.net.www.http.HttpClient { 
[javac] 
[javac] /workspace/<path-to-files>/HttpURLConnection.java:19: warning: sun.net.www.protocol.http.HttpURLConnection is Sun proprietary API and may be removed in a future release 
[javac] public class HttpURLConnection extends sun.net.www.protocol.http.HttpURLConnection { 
[javac]                ^

e ...

[javac] /workspace/<path-to-files>/JavaFile.java:17: warning: sun.misc.BASE64Decoder is Sun proprietary API and may be removed in a future release 
[javac] import sun.misc.BASE64Decoder; 
[javac]    ^
[javac] /workspace/<path-to-files>/JavaFile.java:338: warning: sun.misc.BASE64Encoder is Sun proprietary API and may be removed in a future release 
[javac]   BASE64Encoder encoder = new BASE64Encoder(); 
[javac]  ^

Qualcuno può suggerire una buona alternativa a queste API? Oppure possono essere sostituiti con le API Java ufficiali? Mi rendo conto che questi sono solo avvertimenti, ma questo è qualcosa che ho intenzione di risolvere.

+0

Inoltre è possibile visualizzare i suggerimenti da [questo] (http://stackoverflow.com/questions/9399400/what-does-update-method-of-messagedigest-do-and-what-is-base64encoder-meant-for) post – CAMOBAP

risposta

7

Non è chiaro il motivo per cui si sta dichiarando il proprio HttpURLConnection e Handler classi, in primo luogo - siete sicuri si desidera compilare quelli?

Come per Base64 - Mi piace this public domain implementation me stesso.

6

Se hai scritto un client http, hai reinventato la ruota. Ce n'è già una buona già nello apache http client.

Se si desidera codificare/decodificare Base64, esiste una classe per questo in apache commons codec.

0

Non sono sicuro del motivo per cui è necessario utilizzare gli oggetti sun.net.www.protocol.http direttamente nel codice, poiché vengono utilizzati internamente da HttpUrlConnection. Puoi usare quell'oggetto al posto di quelli interni. Se quell'API non soddisfa le tue esigenze, c'è Apache HttpClient.

Quanto base 64 codifica, è possibile utilizzare quello fornito con Java Mail simili:

final InputStream decoded = MimeUtility.decode(encodedInput, "base64"); 

o Apache commons-codec.

Problemi correlati