2012-01-05 25 views
5

私は、その文書内に絶対URLを持つことを望むベースURLといくつかの相対URIを持っています。相対パスからの絶対URL

など。その文書で基地= https://example.com/some/path.html?query=stringと相対URI:

あなたはそれを達成する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

これはすでに1000回もCで書かれていると思います。たとえば、apacheの場合。ここで

はいくつかのポインタです:

libSoup、GNOMEで使用されるHTTPライブラリ:Boostライブラリのために提案http://developer.gnome.org/libsoup/unstable/SoupURI.html#soup-uri-new-with-base

:グーグル自身(?クロームの一部)により、

http://code.google.com/p/google-url/

さらに別のもの:http://uriparser.sourceforge.net/

W3C:libcamelで

URL解析:

GLibの、私の好きなCライブラリ:http://developer.gnome.org/glib/unstable/glib-URI-Functions.html

libedataserver(すべてがように見えることhttp://www.google.com/codesearch#KhbZeNk3OGk/camel/camel-url.c

いくつかのより多くのURI構文解析APIは、相対URIを持っていない進化から) http://developer.gnome.org/libedataserver/stable/libedataserver-e-url.html

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

+3

3人のうち2人が間違った言語で表示されています –

+0

"すでに1000回Cで書かれていた"、そうですか?HTParseとuriparserはうまく見えますが、他のライブラリはC++か(libcamel)のどちらかに依存しています。私は後でさらに詳しく見ていきます。ありがとう! – kay

+0

確かに。しかし、外国のCコードを再利用することは、あなた自身でそのようなスニペットを書くことよりも難しい場合がよくあります。残念なことに、彼らの記憶を扱う彼らのやり方は、あなたのやり方を見つけられないかもしれません。 Cにおけるコードスタイルの違いは、例えば、 Java。私はglib、btwのほんの初歩的なURI関数を見て驚いた。 –

関連する問題