2012-01-05 5 views
5

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

E.g. База = https://example.com/some/path.html?query=string и относительные URI, в этом документе:

В Java у вас есть class URL выполнения, что:

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

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

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

+0

проверить http://stackoverflow.com/questions/726122/best-ways-of-parsing-a-url-using-c – frankc

ответ

2

Вы можете поспорить, что это уже было написано тысячу раз в C. Например, для apache.

Вот некоторые указатели:

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

Предлагаемые для библиотек буста:

сами по себе (часть Chrome?) Google: 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

еще несколько URI разбора API-интерфейсы, что все, кажется, не имеют относительные идентификаторы 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, glib addon: http://developer.gnome.org/gnet/stable/gnet-uri.html

+3

2 из 3 являются неправильным языком –

+0

Трудно найти библиотеки, хотя они были «написаны тысячу раз в С уже», не так ли?HTParse и uriparser кажутся хорошими, другие библиотеки либо C++, либо (libcamel) имеют чертову зависимости. В дальнейшем я буду смотреть дальше. Благодаря! – kay

+0

Действительно. Но повторное использование внешнего кода C часто также сложнее, чем просто написать такой фрагмент самостоятельно. К сожалению, их способ справиться с памятью может просто не найти способ сделать это. Различия в стиле кода в C гораздо более серьезны, чем, например, в Ява. Я был удивлен, увидев только довольно элементарные функции URI, в glib, кстати. –

Смежные вопросы