# 11.7. web services

Spring Boot 提供 Web 服务自动配置，因此您所要做的就是定义您的`Endpoints`.

使用`spring-boot-starter-webservices`模块可以轻松访问[Spring Web Services](https://docs.spring.io/spring-ws/docs/4.0.8/reference/html/)功能。

`SimpleWsdl11Definition`和`SimpleXsdSchema`beans 可以分别为您的 WSDL 和 XSD 机型自动创建。为此，请配置它们的位置，如以下示例所示：

```
spring.webservices.wsdl-locations=classpath:/wsdl
```

**11.7.1. 使用 WebServiceTemplate 调用 Web 服务**

如果您需要从应用程序调用远程 Web 服务，则可以使用该类[`WebServiceTemplate`](https://docs.spring.io/spring-ws/docs/4.0.8/reference/html/#client-web-service-template)。由于`WebServiceTemplate`实例在使用之前通常需要进行自定义，因此 Spring Boot 不提供任何单个自动配置的`WebServiceTemplate`bean。但是，它会自动配置 `WebServiceTemplateBuilder`，可用于在需要时创建`WebServiceTemplate`实例。

下面的代码展示了一个典型的例子：

```
@Service
public class MyService {
​
    private final WebServiceTemplate webServiceTemplate;
​
    public MyService(WebServiceTemplateBuilder webServiceTemplateBuilder) {
        this.webServiceTemplate = webServiceTemplateBuilder.build();
    }
​
    public SomeResponse someWsCall(SomeRequest detailsReq) {
        return (SomeResponse) this.webServiceTemplate.marshalSendAndReceive(detailsReq,
                new SoapActionCallback("https://ws.example.com/action"));
    }
​
}
```

默认情况下，`WebServiceTemplateBuilder` 使用类路径上的可用 HTTP 客户端库检测合适的基于 HTTP 的 `WebServiceMessageSender`。您还可以自定义读取和连接超时，如下所示：

```
@Configuration(proxyBeanMethods = false)
public class MyWebServiceTemplateConfiguration {
​
    @Bean
    public WebServiceTemplate webServiceTemplate(WebServiceTemplateBuilder builder) {
        WebServiceMessageSender sender = new HttpWebServiceMessageSenderBuilder()
                .setConnectTimeout(Duration.ofSeconds(5))
                .setReadTimeout(Duration.ofSeconds(2))
                .build();
        return builder.messageSenders(sender).build();
    }
​
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.shiker.tech/spring-boot-can-kao-wen-dang/11.-io/11.7.-web-services.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
