2010-06-02 22 views
7

Có tiện ích Apache nào lấy Chuỗi truy vấn và một số mã hóa và trả về Bản đồ của khóa, giá trị [] url được giải mã không?Chuỗi truy vấn phân tích bằng HTTPclient để trích xuất nameValuePairs

+0

Bạn có gặp phải một số vấn đề về mã hóa với các giá trị được truy xuất thông qua phương thức getParameter của HttpServletRequest không? – Powerlord

+0

@Powerlord có lẽ anh ta không ở trong môi trường servlet. –

+1

@JaimeHablutzel [tag: tomcat] nằm trong thẻ. – Powerlord

Trả lời

7

Nó không còn được dùng nữa, nhưng bạn có thể sử dụng HttpUtils.parseQueryString.

Nó ánh xạ tên tham số thành giá trị. Nếu tham số xuất hiện nhiều lần, giá trị là một mảng.

EDIT: Phương pháp trên không được chấp nhận vì nó không cho phép bạn chỉ định mã hóa ký tự.

Dự án HttpClient tại apache có các lớp bạn cần để đạt được điều này.

Sử dụng URIUtil.decode(String data, String encoding) để giải mã chuỗi truy vấn.

Sau đó, ParameterParser.parse(String query, char separator) để nhận danh sách NameValuePair s. Sau đó, bạn có thể đặt chúng vào Bộ sưu tập Commons MultiMap, được khóa bằng tên thông số. (Bạn có thể sử dụng bản đồ băm thông thường, nhưng liên quan đến nhiều mã hơn để xử lý nhiều giá trị cho mỗi khóa.)

+2

điều gì về http://www.docjar.com/docs/api/org/apache/catalina/util/RequestUtil.html#parseParameters%28Map,%20byte,%20String%29? –

+0

vâng, đó là ý tôi muốn viết! :) – mdma

+0

Nhưng, tôi đã không ứng dụng của tôi để phụ thuộc vào libs tomcat, là nó tiếp xúc với nơi khác? –

7

Nếu bạn đang sử dụng phiên bản 4.x của HttpClient, bạn sẽ muốn sử dụng URLEncodedUtils.parse(). Phải mất một URI (hoặc chuỗi ký tự +) và trả về một danh sách NameValuePairs.

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