Tôi đang cố gắng gửi một HTTP GET với một đối tượng json trong cơ thể của nó. Có cách nào để thiết lập phần thân của HttpClient HttpGet không? Tôi đang tìm kiếm tương đương với HttpPost # setEntity.Apache HttpClient GET với cơ thể
Trả lời
Từ những gì tôi biết, bạn không thể làm điều này với lớp HttpGet mặc định đi kèm với thư viện Apache. Tuy nhiên, bạn có thể phân lớp thực thể HttpEntityEnclosingRequestBase và đặt phương thức GET. Tôi đã không kiểm tra này, nhưng tôi nghĩ rằng ví dụ sau đây có thể được những gì bạn đang tìm kiếm:
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
public final static String METHOD_NAME = "GET";
@Override
public String getMethod() {
return METHOD_NAME;
}
}
Edit:
Bạn có thể sau đó làm như sau:
...
HttpGetWithEntity e = new HttpGetWithEntity();
...
e.setEntity(yourEntity);
...
response = httpclient.execute(e);
Sử dụng Câu trả lời của torbinsky tôi đã tạo ra lớp trên. Điều này cho phép tôi sử dụng các phương thức tương tự cho HttpPost.
import java.net.URI;
import org.apache.http.client.methods.HttpPost;
public class HttpGetWithEntity extends HttpPost {
public final static String METHOD_NAME = "GET";
public HttpGetWithEntity(URI url) {
super(url);
}
public HttpGetWithEntity(String url) {
super(url);
}
@Override
public String getMethod() {
return METHOD_NAME;
}
}
Tôi đã thử mã trên với một dịch vụ web mà tôi cần phải nói chuyện với dự án của tôi và không đi. Tôi chỉ nhận được trên bản ghi dịch vụ daemon "Lỗi ứng dụng nội bộ, đóng kết nối." Jersey cung cấp một HttpGet với các thực thể (được gọi khác nhau), nhưng đáng tiếc apache thì không. Dịch vụ web cụ thể này thực sự mong đợi một yêu cầu GET và không phải là một POST. –
Làm thế nào chúng ta có thể gửi yêu cầu uri trong ví dụ này giống như HttpGet & HttpPost ???
public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase
{
public final static String METHOD_NAME = "GET";
@Override
public String getMethod() {
return METHOD_NAME;
}
HttpGetWithEntity e = new HttpGetWithEntity();
e.setEntity(yourEntity);
response = httpclient.execute(e);
}
- 1. Apache HTTPClient SSLPeerUnverifiedException
- 2. Apache HttpClient 4.1 trên Android
- 3. Viết trong yêu cầu cơ thể với HttpClient
- 4. Lỗi tạm thời Apache HttpClient: NoHttpResponseException
- 5. Tệp chứng chỉ Apache HttpClient và PEM
- 6. Apache HTTPClient Streaming HTTP POST Request?
- 7. Apache HttpClient mới nhất trong SDK Android
- 8. Apache HttpClient 4.1 - Cài đặt Proxy
- 9. Xuân RestTemplate - http GET với yêu cầu cơ thể
- 10. Không thể xử lý url với dọc quầy bar/ống trong Java/Apache HttpClient
- 11. Đăng một cơ thể rỗng lên REST API qua HttpClient
- 12. Apache HttpClient trên Android sản xuất CertPathValidatorException (IssuerName! = SubjectName)
- 13. Apache HttpClient tạo biểu mẫu nhiều bài đăng
- 14. Apache HttpClient nhận thêm tiêu đề phạm vi byte?
- 15. Apache HttpClient 4.0-beta2 httppost, cách thêm người giới thiệu?
- 16. java: apache HttpClient> cách tắt thử lại
- 17. Cách nhận phản hồi dưới dạng Tài liệu XML với Apache Httpclient api?
- 18. Apache HttpClient được throwng 500s HTTP nhưng không thể tái tạo trong một trình duyệt
- 19. Không thể khởi tạo loại HttpClient
- 20. HttpClient NoClassDefFoundError
- 21. "Không thể GET /" với Connect trên Node.js
- 22. . HttpClient với tùy chỉnh JsonConverter
- 23. Định dạng tiền tệ Excel cơ bản với Apache POI
- 24. JDBC get/setObject so với get/setSpecificType
- 25. HttpClient và Mẫu khôi phục mùa xuân?
- 26. Xác thực với sharepoint với kerberos từ một java HttpClient
- 27. Làm thế nào để hủy bỏ HttpClient GET yêu cầu web
- 28. Apache Cassandra tích hợp với Apache Solr
- 29. HTTPclient và proxy phổ biến
- 30. RestTemplate cơ bản hoặc tiêu hóa xác thực với httpclient hiện tại (4.x)
Hầu như lặp lại: http://stackoverflow.com/questions/978061/http-get-with-request-body –
Nikita - Câu hỏi của tôi cũng tương tự như một trong những bạn đăng, tuy nhiên tôi đang yêu cầu cụ thể như thế nào làm như vậy thông qua API Apache HttpClient. Cảm ơn bạn mặc dù. –
Câu trả lời là không thể. Yêu cầu GET không thể chứa nội dung theo đặc điểm kỹ thuật. Bạn cần sử dụng các yêu cầu POST. –