これは明らかに以前に返信されていたようですので、私は正しいスレッドを逃しているに違いないと感じます。私はここや他の場所のスレッドをたくさん読んでいましたが、私はこの質問に対する答えが「これはあなたのやり方です」とは見えませんでした...文字列URLを取得し、それをエンコードするための最良の方法は何ですか
プログラムは完全なURLを文字列として受け取ります。例: "http://www.stackoverflow.com/questions/somepage?somequery#somefragment"
この文字列を受け取り、HttpClientのような接続で使用するために正しくエンコードされていることを確認します。
私が読んだところから、これを行う方法は、さまざまな部分をパラメータとして持つURI()コンストラクタを使用するように思えます。それでは、URLであること以外はわかっていない、文字列urlを取得する最も信頼できる方法は何か、そしてURI()コンストラクタに必要なさまざまな部分に分割してください。
ここで私は一緒につなぎました。この方法に欠陥がありますか?
URL url = new URL(urlString);
URI uri = new URI(url.getProtocol(), url.getAuthority(), url.getPath(), url.getQuery(), null);
次に、uri変数には、エンコードされたすぐに使用できるURIが含まれています。このコードはこれまでのところ動作しますが、発生する可能性のある落とし穴がないことを確認したいと思います。
ありがとうございました
URLのクラスは、ネットワークI/Oを引き起こす特定のメソッドを呼び出す際に、文字列操作のために避けるべきです。 – McDowell
ありがとうございます。私はこの状況を認識していましたが、最近のバージョンでこれが修正されている箇所を読んだことがあります。 –