Абсолютный URL из относительного пути - PullRequest
6 голосов
/ 06 января 2012

У меня есть базовый URL и некоторые относительные URI в этом документе, я хочу иметь абсолютный путь.

Например, base = https://example.com/some/path.html?query=string и относительные URI в этом документе:

В Java у вас есть URL-адрес класса , который выполняет:

URL abs = new URL(new URL(basePath), relPath);

Но как ни странноДостаточно, я не могу найти простую библиотеку C или функцию, реализующую только это.

Есть ли библиотека, доказывающая эту функцию?Или, еще лучше, какой-нибудь небольшой автономный файл, который можно использовать?

Ответы [ 2 ]

4 голосов
/ 06 января 2012

Вы можете поспорить, что это уже тысячу раз написано на Си. Для apache, например.

Вот несколько указателей:

libSoup, библиотека http, используемая GNOME: http://developer.gnome.org/libsoup/unstable/SoupURI.html#soup-uri-new-with-base

Предлагается для библиотек Boost: http://cpp -netlib.github.com /

По Google (часть Chrome?): http://code.google.com/p/google-url/

Еще один: http://uriparser.sourceforge.net/

W3C: http://www.w3.org/Library/src/HTParse

Разбор URL в libcamel: http://www.google.com/codesearch#KhbZeNk3OGk/camel/camel-url.c

Еще несколько API для синтаксического анализа URI, которые кажутся не , имеют относительные URI:

GLib, моя любимая библиотека C: http://developer.gnome.org/glib/unstable/glib-URI-Functions.html

libedataserver (из Evolution) http://developer.gnome.org/libedataserver/stable/libedataserver-e-url.html

GNet, простое дополнение: http://developer.gnome.org/gnet/stable/gnet-uri.html

1 голос
/ 14 апреля 2012

Для Windows вы можете использовать CoInternetCombineUrl из Urlmon.dll или UrlCombine из Shlwapi.lib.Они делают то же самое AFAIK.

...