Introduction
This article explains the how you access a webservice through a Proxy Server.
Using the code
In order to show an example of this, we will use a public web service provided by Google. To use this ws, we need to obtain a Validation Key from Google. Next we defined the search criteria and we display the total of obtained registries.
We use the following libraries :
NetworkCredential
Class
Provides credentials for password-based authentication schemes such as basic, digest, NTLM, and Kerberos authentication. For a list of all members of this type, see NetworkCredential
Members. The NetworkCredential
class is a base class that supplies credentials in password-based authentication schemes such as basic, digest, NTLM, and Kerberos. Classes that implement the ICredentials
interface, such as the CredentialCache
class, return NetworkCredential
instances. This class does not support public key-based authentication methods such as SSL client authentication.
WebProxy
Class
Contains HTTP proxy settings for the WebRequest
class. For a list of all members of this type, see WebProxy Members. The WebProxy
class contains the proxy settings that WebRequest instances use to override the proxy settings in GlobalProxySelection
. The WebProxy class is the base implementation of the IWebProxyinterface
.
The Proxy Server IP Adress is 127,0,1,2 and the port is the 80.
The data of the user for the authentication with the proxy are:
User Id: user
Password: pwd
Domain: MyDomain
The following VB.NET code shows an example:
Private Sub btnSearch_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSearch.Click
Dim s As New Google.GoogleSearchService
Try
Dim strLicenceseKey As String = "google license key"
Dim strSearchTerm As String = "Bruno Capuano"
Dim cr As New System.Net.NetworkCredential("user", "pwd", "MyDomain")
Dim pr As New System.Net.WebProxy("127.0.1.2", 80)
pr.Credentials = cr
s.Proxy = pr
Dim r As Google.GoogleSearchResult = s.doGoogleSearch(strLicenceseKey, _
strSearchTerm, 0, 10, True, "", False, "", "", "")
Dim estResults As Integer = r.estimatedTotalResultsCount
MsgBox(CStr(estResults))
Catch ex As System.Web.Services.Protocols.SoapException
MsgBox(ex.Message)
End Try
End Sub
If you want to use the current user credential you can use the DefaultCredentials
Property. The DefaultCredentials
property applies only to NTLM, negotiate, and Kerberos-based authentication. Sample :
pr.Credentials = System.Net.CredentialCache.DefaultCredentials
DefaultCredentials represents the system credentials for the current security context in which the application is running. For a client-side application, these are usually the Windows credentials (user name, password, and domain) of the user running the application. For ASP.NET applications, the default credentials are the user credentials of the logged-in user, or the user being impersonated.
Note - The ICredentials
instance returned by DefaultCredentials
cannot be used to view the user name, password, or domain of the current security context.
Conclusion
This is my first article and a very simple one. Any questions or suggestions are welcome ! Bye !