Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring集成或Apache HTTP客户端_Apache_Spring_Http_Client_Integration - Fatal编程技术网

Spring集成或Apache HTTP客户端

Spring集成或Apache HTTP客户端,apache,spring,http,client,integration,Apache,Spring,Http,Client,Integration,我有一个spring应用程序,它需要为一些数据调用基于REST的外部API调用 API中的数据格式是JSON 我的问题是,以下哪一个选项更适合进行外部api调用 Spring集成(使用ws:outbound gateway) ApacheCommonsHttpClient 请分享你的想法…我用了Spring&。Jersey通过使用诸如@GET&@POST&

我有一个spring应用程序,它需要为一些数据调用基于REST的外部API调用

API中的数据格式是JSON

我的问题是,以下哪一个选项更适合进行外部api调用

  • Spring集成(使用ws:outbound gateway)

  • ApacheCommonsHttpClient


  • 请分享你的想法…

    我用了Spring&。Jersey通过使用诸如
    @GET
    &
    @POST
    &
    @DELETE
    和JAX-RS库捆绑等注释,使得使用Spring构建RESTful Web服务变得容易。

    Spring附带了一个名为
    RestTemplate
    ()的类,这应该使这类工作变得简单。它隐藏HTTP处理并提供REST风格的操作接口。它包括对用于在JSON之间进行转换的消息转换器的支持(在本例中,Spring支持Jackson库)

    Spring集成在这方面做得太过分了——REST本身就很简单。Commons HttpClient可以工作,但除此之外还有额外的工作要做


    请参阅如何使用
    restemplate
    ,以及JSON消息转换。

    正如其他人所提到的那样,Spring RestTemplate和Jersey Rest Client将完成这项工作。我两者都用过。它们都能与Jackson和IIRC配合使用,如果找到它们,它们会自动使用(spring是肯定的)

    我喜欢SpringRESTTemplate的一个优点是,您可以将CommonsHTTP作为传输插件。因此,如果您有一些奇怪的头、cookie、超时、线程,您可以配置Commons HTTP,然后将其放入RestTemplate

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters().add(new MappingJacksonHttpMessageConverter());
    restTemplate.setErrorHandler(new DefaultResponseErrorHandler());
    CommonsClientHttpRequestFactory f = new CommonsClientHttpRequestFactory();
    f.setReadTimeout(120 * 1000);
    

    关键是,如果您正在考虑使用Commons HTTP客户端,那么正如@Skaffman所说的,RestTemplate在更复杂的事情上是不需要动脑筋的

    我所有的API请求都是简单的Get请求,数据以JSON格式返回。我最初的想法是使用ApacheHTTP客户端进行API调用,并使用jackson解析JSON响应。我开始阅读有关spring集成的内容,并想知道是否有人为此目的使用spring集成…您可以通过Jersy for JSON执行以下操作来完成简单的get请求:
    String BASE_URI=”http://localhost:8080/HelloWorldWebapp/resources";
    Client=Client.create()
    WebResource-WebResource=client.resource(基本URI)
    String jsonData=webResource.path(“foo/”).accept(“application/json”).get(String.class)
    See你能提供更多信息吗,为什么spring集成是一种过度杀伤力?@johnny:因为它是一个大型复杂库,旨在与遗留系统集成
    RestTemplate
    只是一个类,易于使用,并且已经是Spring的一部分。对我来说,这听起来很简单。@johnny看到我的答案了。。。你可以在SpringRESTTemplate中插入CommonsHTTP。听起来不错。那么,使用SpringREST模板,我可以实现以下功能吗?1) 通过HTTP调用2)获取json响应3)将json响应解析为java对象,如果您插入MessageConverter,它甚至会自动为您执行此操作。请参阅javadoc,我以前在示例代码(jaxb)中使用了错误的消息转换器,现在使用jackson.Gotcha。谢谢你提供的细节。从您的详细信息来看,SpringREST模板听起来非常适合我的应用程序。首先,我将浏览SpringREST模板javadoc并了解实现细节。谢谢@AdamGent。建议的实现对我来说很有效,并且为修改我的HTTPClient调用设置提供了相当大的灵活性。在spring中有没有办法测量HTTP调用的性能(延迟)??