import java.util.Map; import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.util.InsecureTrustManagerFactory; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.http.client.reactive.ClientHttpConnector; import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.util.CollectionUtils; import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient.RequestBodySpec; import reactor.core.publisher.Mono; import javax.net.ssl.SSLException; public class MyWebClitntUtil { private static final MediaType MEDIATYPE = MediaType.APPLICATION_JSON_UTF8; /** * * @param paramter * 请求参数 * @param url * 请求路径 * @param resultType * 返回结果类型 * @return */ public static <V> V post(Object paramter, String url, Class<V> resultType) { return post(uri(url, HttpMethod.POST), paramter, resultType); } /** * * @param paramter * 请求参数 * @param url * 请求路径 * @param header * 请求头 * @param resultType * 返回结果类型 * @return */ public static <V> V post(Object paramter, String url, Map<String, String> header, Class<V> resultType) { RequestBodySpec uri = uri(url, HttpMethod.POST); addHeader(header, uri); return post(uri, paramter, resultType); } private static <V> V post(RequestBodySpec uri, Object paramter, Class<V> resultType) { return uri.contentType(MEDIATYPE).body(Mono.just(paramter), Object.class).retrieve().bodyToMono(resultType) .block(); } /** * * @param url * 请求路径 * @param resultType * 返回结果类型 * @return */ public static <V> V get(String url, Class<V> resultType) { return uri(url, HttpMethod.GET).retrieve().bodyToMono(resultType).block(); } /** * * @param url * 请求路径 * @param header * 请求头 * @param resultType * 返回结果类型 * @return */ public static <V> V get(String url, Map<String, String> header, Class<V> resultType) { RequestBodySpec uri = uri(url, HttpMethod.GET); addHeader(header, uri); return uri.retrieve().bodyToMono(resultType).block(); } private static RequestBodySpec uri(String url, HttpMethod method) { return createWebClient().method(method).uri(url); } private static void addHeader(Map<String, String> header, RequestBodySpec uri) { if (!CollectionUtils.isEmpty(header)) { header.forEach((name, value) -> uri.header(name, value)); } } public static WebClient createWebClient() {//已绕开https证书认证 SslContext sslContext = null; try { sslContext = SslContextBuilder .forClient() .trustManager(InsecureTrustManagerFactory.INSTANCE) .build(); } catch (SSLException e) { e.printStackTrace(); } SslContext finalSslContext = sslContext; ClientHttpConnector httpConnector = new ReactorClientHttpConnector(opt -> { opt.sslContext(finalSslContext); }); return WebClient.builder().clientConnector(httpConnector).build(); } } 依赖:
compile('org.springframework:spring-webflux') compile('io.projectreactor.ipc:reactor-netty')
相关推荐
很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。本文就较为详细的说明了WebClient中使用post...
本文将深入探讨如何使用HTTPClient库来发送HTTPS请求,以及涉及到的证书管理相关知识。 首先,理解HTTPS协议是至关重要的。HTTPS(HyperText Transfer Protocol Secure)是一种基于SSL/TLS的安全通信协议,它在HTTP...
其中WebClient类处于System.Net名字空间中,该类的主要功能是提供向URI标识的资源发送数据和从URI标识的资源接收数据的公共方法。我们利用其中的DownloadFile()方法将网络文件下载到本地。然后用FileStream类的...
- WebClient类在.NET框架中用于以简单的方式发送HTTP请求和接收HTTP响应。通过WebClient可以方便地向指定的URL发送SOAP消息,并接收Web服务的响应。 - 示例代码展示了如何构建一个WebClient对象,配置必要的信息,...
POST方法通常用于提交表单,将数据发送到服务器处理,而GET方法是从服务器检索信息。在***中,可以使用Response.Redirect()或Server.Transfer()方法配合POST和GET来实现页面跳转,并携带必要的数据。例如,使用POST...
在ASP.NET中,创建WebService通常涉及到创建一个`.asmx`文件,该文件包含了服务的公共方法。这些方法会被编译成ASMX Web服务,可以通过WSDL(Web Services Description Language)文件来描述其接口,供其他系统发现...
通过指定Web Service的URL和方法名,可以发送请求并接收响应。 - 注意點.rtf可能是关于如何使用Web Service或理解示例代码的文档,而`note.txt`可能包含开发者留下的注释或提示信息。 3. **技术要点**: - **SOAP...
这段代码通过WebClient类的DownloadString方法向`checkip.dyndns.org`发送一个HTTP GET请求,然后从返回的HTML内容中解析出IP地址。这种方法适用于大多数家庭和小型企业网络环境,因为它们通常只有一个公网IP地址。 ...
在WCFWebClient项目中,可能展示了如何使用`System.Net.WebClient`类来访问WCF服务,通过`DownloadData`或`DownloadString`等方法发送请求并接收响应。 5. **Tcp客户端**: WCFTCPClient可能展示了如何直接使用TCP...
- 存储过程源代码,展示如何使用`System.Web.Services`命名空间的`WebClient`或`SoapHttpClientProtocol`类来发送请求和接收响应。 - 示例Web Service的接口定义,帮助理解如何与特定服务进行交互。 - 数据库表...
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
1. 定义服务接口:在 .asmx 文件中,声明一个公共方法,如 `GetWeatherForecast(string city)`,用于接收城市名并返回天气信息。 2. 服务实现:在后台代码中,实现该方法,调用 API 获取天气数据,然后将数据转换为...
使用WebDAV,可以通过创建一个新的XML文档来构造邮件,然后使用WebClient的UploadData方法将数据发送到Exchange服务器的WebDAV端点。记得设置适当的HTTP头,如Content-Type和Authorization,以确保请求能正确被...
11. **向服务器发送请求**:常见的方法有HTTP的GET和POST请求,还可以使用WebClient、HttpWebRequest、HttpClient等类进行异步或同步请求。 12. **DataReader与DataSet的区别**:DataReader是只读、向前的数据流,...
10. Ping类:属于System.Net.NetworkInformation命名空间,用于发送ICMP回显请求,检测网络连接。 11. 属性(Property):在C#中,属性是类的成员,用于封装字段,可以有get和set访问器,控制字段的读写。属性可以...
在C#代码中,我们需要创建一个类,并使用`[WebService]`属性标记它,然后定义公共方法,这些方法将暴露为Web服务的操作。例如,我们可以有一个名为`CheckQQOnline`的方法,接受一个QQ号码作为参数,返回一个布尔值...
ASMX文件包含一个或多个公共方法,这些方法可以通过HTTP请求暴露为Web服务操作。 - .NET Framework提供了System.Web.Services命名空间,其中包含创建和消费WebService所需的所有类和接口,如WebService类和...
8. **源码结构**:C#自动登录源码通常包含以下几个部分:URL定义、HTML解析、POST数据构造、发送请求、处理响应(包括检查登录是否成功,管理Cookie)。 9. **错误处理**:源码应包含适当的错误处理机制,例如网络...
- 实例化生成的代理类后,可以通过代理类的公共方法调用Web服务的操作。这些方法会封装SOAP请求并发送到Web服务的URL,然后接收并处理响应。 6. **处理异步调用** - 在生成客户端代理类时,如果启用了`...
- ASMX Web Service:使用HttpClient或WebClient类发送HTTP请求,解析返回的XML或SOAP响应。 - WCF(Windows Communication Foundation):支持多种协议和服务样式,如SOAP、RESTful。 - SOAP UI:测试工具,可...