Je suis incapable de se connecter à l'API REST pour 1 de 2 URL.net HttpWebRequest: La connexion sous-jacente a été fermée: Une erreur inattendue est survenue sur un envoi
iContact.com a 2 URLS pour leur API REST.
Le code suivant fonctionnera pour la première URL
"https://app.sandbox.icontact.com/icp/a/"
Mais échouera pour l'URL suivante
https://app.icontact.com/icp/a/
code Détails
- C'est une application console
- L'application a été écrite dans le Cadre VB.net .Net 4.5
- Nuget Forfaits Newtonsoft.JSON
Erreur: La connexion sous-jacente a été fermée: Un inattendu erreur s'est produite sur un envoi. SendFailure {4}
Dépannage:
- confirmé n'est pas un problème de pare-feu à l'aide de l'application ARC chrome pour tester repos APPI
- Capable de ping sur le site web
- URL Sandbox est en mesure pour se connecter et récupérer les résultats
- Bien que les informations d'identification fournies soient fausses, vous devriez pouvoir obtenir une erreur d'identification à la place de la connexion fermée
Code du module principal:
Imports System.Net
Module MainModule
Sub Main()
Try
Dim MyRequest As HttpWebRequest
MyRequest = IContactManager.BuildJsonRequest
Dim iContactSecurityInformation As ContactClass
iContactSecurityInformation = IContactManager.GetiContactSecurityInformation(MyRequest)
Catch ex As Exception
End Try
End Sub
End Module
Classe:
Imports Newtonsoft.Json.Linq
Imports System.Net
Imports System.IO
Imports System.Web.Script.Serialization
Imports System.Text
Public Class ContactClass
Public AppId As String
Public BaseUrl As String
Public Username As String
Public Password As String
Public AccountId As String
Public ClientFolderId As String
Public TestMode As Boolean
End Class
Public Class IContactManager
Public Shared Function BuildJsonRequest() As HttpWebRequest
Dim uri = New Uri(Convert.ToString(My.Settings.Base_URL + "a/"))
'Production
Dim request = DirectCast(WebRequest.Create(uri), HttpWebRequest)
request.Method = "Get"
request.Accept = "application/json"
request.ContentType = "application/json"
request.Headers.Add("Api-Version", "2.2")
request.Headers.Add("Api-AppId", "fakeID")
request.Headers.Add("Api-Username", "FakeUser")
request.Headers.Add("Api-Password", "FakePassword")
Return request
End Function
Public Shared Function GetiContactSecurityInformation(request As HttpWebRequest) As ContactClass
Dim Acct As New ContactClass
Dim a
Try
Using response = DirectCast(request.GetResponse(), HttpWebResponse)
Using reader = New StreamReader(response.GetResponseStream())
Dim jsonData = reader.ReadToEnd()
Dim serializer = New JavaScriptSerializer()
a = serializer.Deserialize(Of ContactClass)(jsonData)
End Using
End Using
Catch exc As System.Net.WebException
Dim webResponse = TryCast(exc.Response, System.Net.HttpWebResponse)
If webResponse IsNot Nothing AndAlso webResponse.StatusCode = System.Net.HttpStatusCode.Unauthorized Then
Console.WriteLine("401")
Else
Throw
End If
End Try
Return Acct
End Function
End Class