Подтвердить что ты не робот

Как создать URI из URL?

Я хотел бы use intent.setData(URI) передать данные, полученные из URL. Для этого мне нужно создать URI из URL (или из байт [], который я читал из URL-адреса, или ByteArrayInputStream, который я создаю из byte[] и т.д.). Однако я не могу понять, как это должно быть сделано.

Итак, есть ли в любом случае создание URI из данных, полученных из URL, без предварительной записи данных в локальный файл?

4b9b3361

Ответ 1

Используйте URL.toURI() (Android doc) метод.

Пример:

URL url = new URL("http://www.google.com"); //Some instantiated URL object
URI uri = url.toURI();

Обязательно обработайте соответствующее исключение, например URISyntaxException.

Ответ 2

Я думаю, что ваш ответ можно найти здесь..

Uri.Builder.build() работает довольно хорошо с обычными URL-адресами, но с ошибкой поддерживает номер порта.

Самый простой способ, который я обнаружил, чтобы он поддерживал номера портов, состоял в том, чтобы сначала проанализировать данный URL, а затем работать с ним.

Uri.Builder b = Uri.parse("http://www.yoursite.com:12345").buildUpon();

b.path("/path/to/something/");
b.appendQueryParameter("arg1", String.valueOf(42));

if (username != "") {
  b.appendQueryParameter("username", username);
}

String url = b.build().toString(); 

Источник: http://twigstechtips.blogspot.com/2011/01/android-create-url-using.html

Ответ 3

Обратите внимание, что в Android Uri отличаются от URI Java. Здесь, как избежать использования жестко закодированных строк и в то же время создать Uri с только частью пути строки URL-адреса http, закодированной в соответствии с RFC2396:

Пример строки URL:

String thisUrl = "http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=[redacted]&mapid=value"

метод:

private Uri.Builder builder;
public Uri getUriFromUrl(String thisUrl) {
    URL url = new URL(thisUrl);
    builder =  new Uri.Builder()
                            .scheme(url.getProtocol())
                            .authority(url.getAuthority())
                            .appendPath(url.getPath());
    return builder.build();
}

Чтобы обрабатывать строки запроса, вам необходимо проанализировать url.getQuery(), как описано здесь, а затем передать это в конструктор. appendQueryParameter().

Ответ 4

try {
    uri = new URI(url.toString());
} catch (URISyntaxException e) {
}

Ответ 6

URI uri = null;
URL url = null;

// Create a URI
try {
    uri = new URI("www.abc.com");
} catch (URISyntaxException e) {
}

// Convert an absolute URI to a URL
try {
    url = uri.toURL();
} catch (IllegalArgumentException e) {
    // URI was not absolute
} catch (MalformedURLException e) {
}

// Convert a URL to a URI
try {
    uri = new URI(url.toString());
} catch (URISyntaxException e) {
}

Ответ 7

Мы можем проанализировать любой URL из Uri с помощью

Uri uri =  Uri.parse( "http://www.google.com" );