2012-01-05 15 views
5

Tengo una URL base y algunos URI relativos en ese documento de los que quiero tener la ruta de acceso absoluta.URL absoluta de la ruta relativa

E.g. base = https://example.com/some/path.html?query=string y URIs relativos en ese documento:

En Java que tienen la class URL lograr eso:

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

Pero curiosamente no puedo encontrar una biblioteca C llana o función darse cuenta de eso.

¿Hay alguna biblioteca que pruebe esa característica? ¿O mejor aún algún pequeño archivo autónomo que uno pueda usar?

+0

echa un vistazo a http://stackoverflow.com/questions/726122/best-ways-of-parsing-a-url-using-c – frankc

Respuesta

2

Puedes apostar a que ya se ha escrito miles de veces en C. Para apache, por ejemplo.

Éstos son algunos consejos:

libsoup, la biblioteca http utilizado por GNOME: http://developer.gnome.org/libsoup/unstable/SoupURI.html#soup-uri-new-with-base

propuestos para bibliotecas Boost:

Por Google sí mismos (parte de Chrome?): http://code.google.com/p/google-url/

Otro más: http://uriparser.sourceforge.net/

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

análisis de la URL en libcamel: http://www.google.com/codesearch#KhbZeNk3OGk/camel/camel-url.c

Algunos más URI API de análisis, que todos parecen no tienen URIs relativos:

GLib, mi biblioteca favorita C: http://developer.gnome.org/glib/unstable/glib-URI-Functions.html

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

GNet, a glib addon: http://developer.gnome.org/gnet/stable/gnet-uri.html

+3

2 de los 3 están en el idioma equivocado –

+0

Es difícil encontrar bibliotecas aunque fueron "escritos miles de veces en C", ¿no?HTParse y uriparser parecen agradables, las otras bibliotecas son C++ o (libcamel) tienen infinidad de dependencias. Lo investigaré más tarde. ¡Gracias! – kay

+0

De hecho. Pero reutilizar el código C extranjero a menudo también es más difícil que escribir un fragmento así. Su forma de manejar la memoria podría no encontrar la forma de hacerlo, desafortunadamente. Las diferencias de estilo de código en C son mucho más severas que en, por ejemplo, Java. Me sorprendió ver funciones de URI bastante rudimentarias, en glib, por cierto. –

Cuestiones relacionadas