Rebex HTTPS
HTTP and HTTPS library for modern and legacy platforms
Download 30-day free trial Buy from $349More .NET libraries
-
Rebex Total Pack
All Rebex .NET libraries together
Back to feature list...
SOAP webservices transport layer
On this page:
Stand-alone usage
To utilize the enhanced abilities of HttpRequest
in a .NET SOAP web service client without affecting the rest of your application,
you have to override the GetRequest
method in the generated web service stub class that inherits from .NET's SoapHttpClientProtocol
.
The best way to do this is to add a custom partial class that implements the GetRequest
method and also adds a custom constructor
that creates an instance of Rebex HttpRequestCreator
.
// this assumes you already have a generated MyWebService class in your project
// and that it inherits from System.Web.Services.Protocols.SoapHttpClientProtocol
public partial class MyWebService
{
private readonly HttpRequestCreator _creator;
public MyWebService()
{
// instantiate HttpRequest creator in the constructor
// to make HTTP and TLS/SSL session caches work properly
_creator = new HttpRequestCreator();
// specify any settings if needed
_creator.Settings.SslAllowedVersions = TlsVersion.TLS12 | TlsVersion.TLS11 | TlsVersion.TLS10;
}
protected override WebRequest GetWebRequest(Uri uri)
{
switch (uri.Scheme)
{
case "http":
case "https":
// use Rebex HttpRequest to handle HTTP and HTTPS requests
return _creator.Create(uri);
default:
// use default functionality to handle other requests
return base.GetWebRequest(uri);
}
}
}
' this assumes you already have a generated MyWebService class in your project
' and that it inherits from System.Web.Services.Protocols.SoapHttpClientProtocol
Partial Public Class MyWebService
Private ReadOnly _creator As HttpRequestCreator
Public Sub New()
' instantiate HttpRequest creator in the constructor
' to make HTTP and TLS/SSL session caches work properly
_creator = New HttpRequestCreator()
' specify any settings if needed
_creator.Settings.SslAllowedVersions = TlsVersion.TLS12 Or TlsVersion.TLS11 Or TlsVersion.TLS10
End Sub
Protected Overrides Function GetWebRequest(uri As Uri) As WebRequest
Select Case uri.Scheme
Case "http", "https"
' use Rebex HttpRequest to handle HTTP and HTTPS requests
Return _creator.Create(uri)
Case Else
' use default functionality to handle other requests
Return MyBase.GetWebRequest(uri)
End Select
End Function
End Class
Note: For a list of common pitfalls, check out Migrating to HttpRequest article.
Plugging into .NET WebRequest factory
Registering HttpRequestCreator
with .NET's WebRequest
is the easiest way to make .NET SOAP web services use
Rebex HttpRequest
instead of System.Net.HttpWebRequest
to handle HTTP and HTTPS requests.
// instantiate HttpRequest creator
var creator = new HttpRequestCreator();
// specify any settings if needed
creator.Settings.SslAllowedVersions = TlsVersion.TLS12 | TlsVersion.TLS11 | TlsVersion.TLS10;
// register this creator with .NET's WebRequest to handle HTTP
// and HTTPS requests (replacing System.Net.HttpWebRequest)
creator.Register();
// from now on, all SOAP web service stubs that inherit from
// System.Web.Services.Protocols.SoapHttpClientProtocol class
// will use Rebex HttpRequest instead of .NET HttpWebRequest
// by default
// consume a SOAP web service
var service = new MyWebService();
var news = service.GetSomeNews();
// ...
' instantiate HttpRequest creator
Dim creator = New HttpRequestCreator()
' specify any settings if needed
creator.Settings.SslAllowedVersions = TlsVersion.TLS12 Or TlsVersion.TLS11 Or TlsVersion.TLS10
' register this creator with .NET's WebRequest to handle HTTP
' and HTTPS requests (replacing System.Net.HttpWebRequest)
creator.Register()
' from now on, all SOAP web service stubs that inherit from
' System.Web.Services.Protocols.SoapHttpClientProtocol class
' will use Rebex HttpRequest instead of .NET HttpWebRequest
' by default
' consume a SOAP web service
Dim service = New MyWebService()
Dim news = service.GetSomeNews()
' ...
Note: For a list of common pitfalls, check out Migrating to HttpRequest article.
Back to feature list...