私はXML解析を使用して画像を表示するためにグリッドビューを使用しています、私はいくつかのような例外を得ました
Java.lang.IllegalArgumentException:インデックス80のパスに不正な文字: http://www.theblacksheeponline.com/party_img/thumbspps/912big_361999096_Flicking Off Douchebag.jpg
この問題を解決するには?あらゆる種類のURLを表示したいのですが、だれでも知っているサンプルコードを教えてください。
皆さんありがとう
Android Java SE;
try {
String url = "http://www.example.com/?id=123&art=abc";
String encodedurl = URLEncoder.encode(url,"UTF-8");
Log.d("TEST", encodedurl);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
これも使えます
private static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%";
String urlEncoded = Uri.encode(path, ALLOWED_URI_CHARS);
最も簡単な方法です
Benがコメントで述べているように、次の例に従ってURLのセマンティクスを W3C から変更するため、URLEncoder.encodeを完全なURLに使用しないでください。
URI http://www.w3.org/albert/bertram/marie-claude および http://www.w3.org/albert/bertram%2Fmarie-claude =は同一ではありません。2番目のケースでは、エンコードされたスラッシュは階層的に重要ではありません。
代わりに、 RFC 3986 セクション2.4から独立して、URLのコンポーネント部分を個別にエンコードする必要があります。
通常の状況では、URI内のオクテットがパーセントエンコードされるのは、そのコンポーネントパーツからURIを生成するプロセス中だけです。これは、サブコンポーネントの区切り文字として使用する予約文字とデータとして安全に使用できる予約文字を実装が決定する場合です。いったん生成されると、URIは常にパーセントでエンコードされた形式になります。
つまり、簡単に言うと、あなたの場合、ファイル名をエンコード/エスケープしてから、URLをアセンブルする必要があります。
RL全体はエンコードせず、その一部のみを「信頼できないソース」のようなものからエンコードします。
String query = URLEncoder.encode("Hare Krishna ", "utf-8");
String url = "http://stackoverflow.com/search?q=" + query;
以下の方法を使用できます
public String parseURL(String url, Map<String, String> params)
{
Builder builder = Uri.parse(url).buildUpon();
for (String key : params.keySet())
{
builder.appendQueryParameter(key, params.get(key));
}
return builder.build().toString();
}
URLEncoderはクエリのエンコードにのみ使用してください。代わりに Java.net.URI クラスを使用してください:
URI uri = new URI( "http"、 "www.theblacksheeponline.com"、 "/ party_img/thumbspps/912big_361999096_Flicking Off Douchebag.jpg" 、 null); 文字列リクエスト= uri.toASCIIString();
( "")の代わりに(+)サインインを追加したURLEncoderを試してみましたが、機能せず、404 url not foundエラーが発生しました。
その後、私はより良い答えを得るためにグーグルで検索し、これとその動作が素晴らしいことを発見しました。
String urlStr = "http://www.example.com/test/file name.mp4";
URL url = new URL(urlStr);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
url = uri.toURL();
この方法でURLをエンコードすると、URLを使用してURLを異なる部分に分離できるため、非常に便利です。したがって、文字列操作を実行する必要はありません。
次に、2番目のURIクラスであるこのアプローチは、単一の文字列からではなくコンポーネントを介してURIを構築するときに、コンポーネントを適切にエスケープするURIクラス機能を利用します。