有了JSR 311及其实现,我们有了一个强大的标准,可以通过REST公开Java对象。但是,在客户端,似乎缺少与SOAP的Apache Axis类似的东西-隐藏了Web服务并将数据透明地封送回Java对象的东西。
您如何创建Java RESTful客户端?使用HTTPConnection和手动解析结果?还是专业客户(例如Jersey或Apache CXR)?
这是一个古老的问题(2008年),所以现在有比以前更多的选择:
Apache HTTP Components (4.2) Fluent adapter
。
可以提供NIO支持的新成员(尽管老实说,我认为这并不能像服务器一样真正提高客户端的性能)。
Apache HTTP Components (4.2) Fluent adapter-比旧的Commons HTTP Client 3更好,并且更易于用于构建自己的REST客户端。你必须使用类似于 Jackson的支持JSON解析,并且可以使用 HTTP组件URIBuilder来构造类似于Jersey / JAX-RS Rest客户端的资源URI。HTTP组件也支持NIO,但鉴于REST的短请求性质,我怀疑你会获得比BIO更好的性能。
更新2016:
OkHttp-支持更新的HTTP协议(SPDY和HTTP2)。适用于Android。不幸的是,它没有提供真正的基于反应器循环的异步选项(请参见上面的Ning和HTTP组件)。但是,如果你使用较新的HTTP2协议,则问题不大(假设连接数有问题)。
Retrofit-将根据类似于某些Jersey和CXF扩展名的接口存根自动创建客户端。使用OkHttp。
Apache HttpComponents 5应该具有HTTP2支持
关于选择HTTP / REST客户端的警告。确保检查你的框架堆栈用于HTTP客户端的方式,如何进行线程化,并且如果提供了该客户端,最好使用相同的客户端。那就是如果你使用Vert.x或Play之类的东西,你可能想尝试使用其支持客户端来参与框架提供的任何总线或反应堆循环…否则,为可能发生的有趣线程问题做好准备。
问题内容: 我正在尝试从Java连接到ElasticSearch,但只能通过HTTP连接。我不能使用。ElasticSearch REST API周围是否有Java客户端包装?如果可以,该如何使用? 问题答案: 嗨,有一个全新的项目正好满足您的需求。基于Java的RestAPI for Elasticsearch 看看这个!它的名字是JEST
问题内容: 我正在研究适用于Android和Java的Retrofit REST客户端。 在Eclipse中使用标准Java项目,我在使用@POST且返回类型无效。 进行异步调用。 一切都按预期工作,但是我的测试主方法永远不会终止。我必须手动停止每个测试执行。 为了使测试自动终止,我需要做什么(或停止做什么)? 这是我的Java代码。 问题答案: 默认情况下,Retrofit使用具有60s核心池超
我正在尝试创建RESTful web服务,但无法使删除生效,我不确定问题在哪里。我认为问题在客户端项目中,但也可能在服务器项目的资源类中。 我有一个使用这种方法的学生道课,我不认为这是一个问题,因为它适用于其他项目。 我有一个StudentResource类,它是我从包含这段代码的模式中创建的RESTful资源 然后,我创建了一个java项目,并使用此方法创建了名为OneStudent的RESTf
我注意到Rest客户端上有两个指南:MicroProfile和Vertx。既然微文件支持异步,那么使用基于Vertx的Rest客户端有什么好处?
我正在使用Java Rest客户端进行弹性搜索https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html但找不到批量插入或更新的方法。如何与该客户进行批量操作?
我正在尝试更新在WSO2 Identity Server中创建的用户信息,该服务器使用LDAP作为用户存储,并使用SCIM客户端Java应用程序。从JAVA客户端应用程序使用SCIM Restendpoint 我已经为这个应用程序配置了证书和主机名,并用hasini@gmail.com“用户和它的工作。 我的问题是,当我试图为这个用户使用类时。WSO2IS服务器显示错误: 波姆。xml: 这是将R