Tôi đã cố gắng sử dụng java.net.URI để thao tác chuỗi truy vấn nhưng tôi đã không thực hiện được nhiệm vụ rất đơn giản như nhận chuỗi truy vấn từ một url và đặt nó vào một url khác.Làm thế nào để sử dụng java.net.URI
Bạn có biết làm thế nào để làm cho mã này dưới đây làm việc
URI sample = new URI("test?param1=x%3D1");
URI uri2 = new URI(
"http",
"domain",
"/a-path",
sample.getRawQuery(),
sample.getFragment());
Gọi để uri2.toASCIIString()
nên quay lại: http://domain/a-path?param1=x%3D1
nhưng nó sẽ trả về: http://domain/a-path?param1=x%253D1
(mã hóa kép)
nếu tôi sử dụng getQuery() thay vì getRawQuery() chuỗi truy vấn không được mã hóa ở tất cả và url trông giống như sau: http://domain/a-path?param1=x=1
Giải thích tốt. Vì vậy, giao diện URI được thiết kế kém (tôi hầu như không thấy bất kỳ lý do nào cho hàm tạo thứ hai). Bạn có biết lớp URI nào tốt hơn không? Giống như thời gian joda thay thế lớp Ngày/Lịch? –
Không, tôi không ... và 'URI' đã được tạo lại từ lớp' java.net.URL' cũ hơn, có vấn đề riêng. – Jesper