2017-02-17 5 views
0

아래의 API Create 메서드에 액세스하려고합니다.HTTPS - 전송 연결에서 데이터를 읽을 수 없습니다. 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다.

전송 연결에서 데이터를 읽을 수 없습니다 : 나는 webRequest1.GetRequestStream()를 호출하려고 다음과 같은 오류지고있어 기존 연결이 원격 호스트에 의해 강제로 폐쇄되었다

코드 :

Public Function OfferAffirmRequestURL(ByVal strHost As String, ByVal strClientId As String, ByVal strSecretKey As String, ByVal strApiPath As String) As String 
    Dim strOfferCommand As String = "" 
    Dim strHROBUrl As String = "" 
    Dim strHROBRequestURL As String = "https://" & strHost 
    Dim strErrorMessage As String 

    Dim strXMLString As String = "<?xml version=""1.0"" encoding=""UTF-8""?><Record><ReferenceID>44</ReferenceID><Template>New Offer</Template><RecordData><FormField><candidate_first_name>RBFName16</candidate_first_name><candidate_last_name>LName160</candidate_last_name><candidate_email>[email protected]</candidate_email><candidate_mobile_no>0411111111</candidate_mobile_no><start_date>2014-07-16T00:00:00</start_date></FormField></RecordData></Record>" 
    Dim strTimeStamp As String = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ") 
    Dim data As String = "clientId" & strClientId & "payload" & strXMLString & "timestamp" & strTimeStamp 

    Dim key As Byte() = StringToByteArray(strSecretKey) 
    Dim encrypt As HMACSHA1 = New HMACSHA1(key) 
    Dim dataBytes As Byte() = Encoding.ASCII.GetBytes(data) 
    Dim signatureBytes As Byte() = encrypt.ComputeHash(dataBytes) 
    Dim strSignature As String = Convert.ToBase64String(signatureBytes) 
    Dim strSignatureParam As String = Uri.EscapeDataString(strSignature) 

    strHROBUrl = strHROBRequestURL & strApiPath & "?clientId=" & strClientId & "&payload=" & strXMLString & "&timestamp=" & strTimeStamp & "&signature=" & strSignatureParam 

    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(strXMLString) 
    ServicePointManager.Expect100Continue = False 

    Dim webRequest1 As WebRequest = WebRequest.Create(strHROBUrl) 
    'Dim webRequest1 As HttpWebRequest = DirectCast(WebRequest.Create(strHROBUrl), HttpWebRequest) 
    webRequest1.Method = "POST" 
    webRequest1.ContentType = "text/xml" 
    webRequest1.ContentLength = byteArray.Length 
    webRequest1.Credentials = CredentialCache.DefaultCredentials 

    Try 
     Dim requestWriter As IO.Stream = webRequest1.GetRequestStream() 
     requestWriter.Write(byteArray, 0, byteArray.Length) 
     requestWriter.Close() 

     Dim response As WebResponse 
     response = webRequest1.GetResponse() 
     Dim responseReader As New IO.StreamReader(response.GetResponseStream()) 

     Dim responseData As String = responseReader.ReadToEnd() 
     strErrorMessage = responseData 
     responseReader.Close() 
     webRequest1.GetResponse().Close() 

    Catch ex As WebException 
     strErrorMessage = ex.InnerException.Message 

    End Try 

    Return strErrorMessage 
End Function 

위의 메서드는 아래 표시된 Click 메서드에서 호출됩니다.

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim strCreateOfferURL As String = "" 
    strCreateOfferURL = OfferAffirmRequestURL("abc.xyz.com", "xyz", "4d8b7jpojpodf031e", "/api/record/createRecord.shtml") 
    Label1.Text = strCreateOfferURL 
End Sub 
+0

Debug.Print URL ... 올바른가요? 사이트에 신뢰할 수있는 CA의 유효한 SSL 인증서 또는 컴퓨터에 설치해야하는 자체 서명 된 인증서가 있습니까? – MrGadget

+0

URL에 XML을 쓰고 싶지 않을 것입니다 :' "& payload ="& strXMLString' – MrGadget

+0

안녕하세요 MrGadget 답장을 보내 주셔서 감사합니다. 아래 링크가 내 문제를 해결했습니다. – razor

답변

관련 문제