.NET HttpWebRequest的:基础连接已关闭:上一个发送
问题描述:
发生意外的错误,我无法连接到REST API为1 2的网址.NET HttpWebRequest的:基础连接已关闭:上一个发送
iContact.com有2个网址为他们的REST API。
下面的代码将在第一URL
“https://app.sandbox.icontact.com/icp/a/”
工作,但会失败以下网址
https://app.icontact.com/icp/a/
代码详细
- 这是一个控制台应用程序
- 应用程序写在VB.net .Net框架4.5
- 的NuGet软件包Newtonsoft.JSON
错误: 基础连接已关闭:意外发送时发生错误。 SendFailure {4}
故障排除:
- 确认不使用铬ARC应用测试休息APPI
- 能ping通网站
- 沙盒URL防火墙问题能够连接并检索结果
- 虽然提供的凭据是伪造的,但您应该能够获得证书错误而不是连接关闭
代码主要模块:
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
类:
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
答
我找到了答案,你只需要使用服务点经理不工作
网址ServicePointManager.SecurityProtocol = SecurityProtocolT ype.Tls12