2012-01-05 47 views
5

Tôi có URL cơ sở và một số URI tương đối trong tài liệu đó tôi muốn có đường dẫn tuyệt đối.URL tuyệt đối từ đường dẫn tương đối

Ví dụ: cơ sở = https://example.com/some/path.html?query=string và URI tương đối trong tài liệu đó:

Trong Java bạn có class URL hoàn rằng:

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

Nhưng kỳ lạ đủ tôi không thể tìm thấy một thư viện C đồng bằng hoặc chức năng nhận ra điều đó.

Có thư viện nào chứng minh tính năng đó không? Hoặc tốt hơn nhưng một số tập tin nhỏ khép kín có thể sử dụng?

+0

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

Trả lời

2

Bạn có thể đặt cược điều này đã được viết một nghìn lần trong C rồi. Ví dụ, đối với apache.

Dưới đây là một số gợi ý:

libSoup, thư viện http sử dụng bởi GNOME: http://developer.gnome.org/libsoup/unstable/SoupURI.html#soup-uri-new-with-base

đề xuất cho các thư viện Boost:

By Google bản thân (một phần của Chrome?): http://code.google.com/p/google-url/

Một số khác: http://uriparser.sourceforge.net/

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

phân tích cú pháp URL trong libcamel: http://www.google.com/codesearch#KhbZeNk3OGk/camel/camel-url.c

Một số chi tiết URI API phân tích cú pháp, mà tất cả dường như không có URI tương đối:

GLib, yêu thích C thư viện của tôi: http://developer.gnome.org/glib/unstable/glib-URI-Functions.html

libedataserver (từ 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 trong số 3 ngôn ngữ không chính xác –

+0

Khó tìm thư viện mặc dù chúng đã được "viết một ngàn lần trong C", phải không?HTParse và uriparser có vẻ tốt đẹp, các thư viện khác hoặc là C++ hoặc (libcamel) có địa ngục phụ thuộc. Tôi sẽ xem xét kỹ hơn sau này. Cảm ơn! – kay

+0

Thật vậy. Nhưng việc sử dụng lại mã C nước ngoài thường khó hơn là chỉ viết một đoạn như vậy. Cách của họ để xử lý bộ nhớ có thể chỉ không tìm thấy cách của bạn để làm điều này, không may. Sự khác biệt về kiểu mã trong C nghiêm trọng hơn nhiều so với ví dụ: Java. Tôi đã rất ngạc nhiên khi thấy các hàm URI khá thô sơ, trong glib, btw. –

Các vấn đề liên quan