- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用他们的 REST API 向 SMS 网关发送调用。当我发送一个像“你好”这样的简单词时一切都很好,但是如果我添加一个空格就会遇到麻烦。这是因为 URI 不能包含空格。
做我需要做的事情的正确方法是什么?
HttpClient httpclient = new DefaultHttpClient();
thử {
HttpGet httpget = new HttpGet("http://www.example.com/SecureREST/SimpleSMSsend?PhoneNumber=123&Message=hello how are you?");
httpget.addHeader(new BasicHeader("Accept", "application/json"));
// Create a response handler
ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
System.out.println("----------------------------------------");
System.out.println(responseBody);
System.out.println("----------------------------------------");
} Cuối cùng {
httpclient.getConnectionManager().shutdown();
}
导致 IllegalArgumentException:
Exception in thread "main" java.lang.IllegalArgumentException
at java.net.URI.create(Unknown Source)
at org.apache.http.client.methods.HttpGet.(HttpGet.java:69)
at main.main(main.java:36)
Caused by: java.net.URISyntaxException: Illegal character in query at index 97: https://www.example.com/SecureREST/SimpleSMSsend?PhoneNumber=123&Message=Hello, how are you?
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.parseHierarchical(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.(Unknown Source)
... 3 more
编辑:正如 alexey28 所建议的,我正在使用编码器,这是我现在所做的:
String query = "?PhoneNumber=123&Message=Hello, how are you?";
String host = "https://www.example.com/SecureREST/SimpleSMSsend";
String encodedUrl = host + URLEncoder.encode(query,"utf-8");
HttpGet httpget = new HttpGet(encodedUrl);
但是结果是
Exception in thread "main" org.apache.http.client.HttpResponseException: **Bad Request**
at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:67)
at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:54)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:735)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:709)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:700)
at main.main(main.java:47)
Tôi đang làm gì sai ở đây?
câu trả lời hay nhất
在发送之前使用 URLEncoder 对 URL 参数值进行编码:
String restUrl = URLEncoder.encode("You url parameter value", "UTF-8");
它将用正确的 URL 替换所有符号,包括空格 -> '+'
关于java - 如何在 Java 中使用 HttpGet 在 REST 调用中传递空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10602215/
Github: https://github.com/jjvang/PassIntentDemo Tôi đã làm theo hướng dẫn về cách truyền đối tượng bằng Intent: https://www.javacodegeeks.c
Tôi có Chế độ xem chứa hộp nhập loại văn bản được tạo tự động. Khi tôi nhấp vào nút "Gửi kết quả qua email", mã sẽ đưa bạn đến Em trong Bộ điều khiển kết quả được tính toán
Tôi có một hình ảnh docker cơ sở mà từ đó tôi sẽ xây dựng hình ảnh của riêng mình. Tôi không có Dockerfile cho hình ảnh cơ sở. Về cơ bản, hình ảnh cơ sở sử dụng hai đối số --env, một để chấp nhận giấy phép của nó và một để chọn khung nào sẽ kích hoạt trong vùng chứa. tôi có thể
Giả sử tôi muốn tính tổng của 2^n, trong đó n nằm trong khoảng từ 0 đến 100. Tôi có thể viết như sau: seq { 0 .. 100 } |> Seq.sumBy ((**) 2I) Tuy nhiên, điều này không hoạt động với (*) hoặc các toán tử/hàm khác
Tôi có url này: http://www.example.com/get_url.php?ID=100&Link=http://www.test.com/page.php?l=1&m=7 Khi tôi in $_G
Tôi muốn chuyển địa chỉ được tạo bởi window.URL.createObjectURL(file) sang Dancer.js nhưng tôi nhận được GET blob:http%3A//localhost/b847c5cd-aa
Tôi muốn biết cách chuyển typedef sang hàm. Ví dụ: typedef int box[3][3]; hộp trống, *board[3][3]; Làm cách nào để chuyển bảng cho hàm? TÔI
Tôi đang chuyển một số mã từ Bộ điều khiển sang Mô hình trong ứng dụng Dữ liệu cốt lõi. Tôi đã viết một phương thức trả về NSQuản lýObjectID cho một yêu cầu nhận cụ thể mà tôi thực hiện định kỳ. + (NSQuản lýO
Tại sao tôi không thể chuyển một mảng đã nhập vào một hàm/hàm tạo có bất kỳ [] nào? typedArray = new MyType[ ... ]; items = new ko.observableArray(ty
Tôi là nhà phát triển web mới đang học html5 và javascript. Tôi có một trang web có các "tab" làm cho các phần của trang web biến mất và xuất hiện lại. Các liên kết như sau: HOME và các hàm JavaScript
Tôi đang cố gắng chuyển một tham chiếu đến một hàm dưới dạng tham số. Thật khó để giải thích. Tôi sẽ viết một số ví dụ về mã giả (gọi hàm) function(hello());
Tôi gặp phải lỗi sau khi cố gắng gọi một hàm trong dự án C# mà tôi đang tạo: System.Runtime.InteropServices.COMException: Operation is not allow
Sử dụng ksh. Cố gắng sử dụng lại tập lệnh hiện tại mà không sửa đổi nó, về cơ bản tóm tắt như sau: `expr 5 $1 $2` Làm cách nào để chuyển lệnh nhân (*) làm đối số $1? Lần đầu tiên tôi thử sử dụng "*" và thậm chí \* nhưng nó không hoạt động. tôi cố gắng
Tôi đang nghiên cứu cuốn sách "Play for Java" và nó rất hay. Tôi vẫn còn khá mới với Java, nhưng tôi đã theo dõi các ví dụ và tôi hơi bị mắc kẹt ở Chương 3. Mã có thể được tìm thấy ở đây: Chơi cho Java trên Gi
Tôi biết rằng các đối tượng trong Javascript được sao chép/chuyển qua tham chiếu. Nhưng còn chức năng thì sao? Tôi đang thử mã này thì tôi gặp phải điều gì đó khó hiểu. Đây là đoạn mã: x = function() { console.log(
Tôi muốn có thể truyền các tham số như thế này: fn(a>=b) hoặc fn(a!=b) Tôi đã thấy hành vi này trong DjangoORM và SQLAlchemy, nhưng tôi không biết cách triển khai nó. Câu trả lời hay nhất ORM sử dụng specia
Trong dự án Angular của tôi, gần đây tôi đã nâng cấp rxjs lên phiên bản 6. Bây giờ, mô-đun từ npm (bên trong thư mục node_modules) bị lỗi do một số thay đổi có thể xảy ra (các lần nhập cũ không còn hoạt động). Tôi đã điều chỉnh mã của mình
Câu hỏi này đã có câu trả lời ở đây: Vấn đề * trong đối số dòng lệnh (6 câu trả lời) đã đóng 3 năm trước. Tôi đang viết chương trình C theo ký hiệu tiếng Ba Lan ngược, sử dụng lệnh
$(document).ready(function() { function GetDeals() { alert($(this).attr("id")); } $('.filter
Đây là một ví dụ: Sao chép mã như sau: use strict; #Đây là hai mảng my @i =('1','2','3'); my @j =('a','b', 'c'); &n
Tôi là một lập trình viên xuất sắc, rất giỏi!