Мне нужно отправить через VB.NET два файла, файл ключа и файл pem, это можно сделать с помощью Curl с помощью команды:
curl https://someWebSite.com/test --key ./private_key.key --cert ./certificate.pem -d grant_type=password -d username="" -d password=""
До сих пор я делал это в VB.NET, но он просто выдает сообщение об ошибке "Additional information: The remote server returned an error: (401) Unauthorized.
Я пришел к одному примеру, где они используют файл * .p12, и я попытался воссоздать его в VB.NET, но все еще говорил ту же ошибку. Это мой код:
Dim token As String = ""
Dim uriVar As New Uri("https://someWebSite.com/test")
Dim user As String = ""
Dim password As String = ""
Dim request As HttpWebRequest = CType(WebRequest.Create(uriVar), HttpWebRequest)
request.KeepAlive = False
request.ProtocolVersion = HttpVersion.Version11
request.Method = "POST"
Dim credential As New NetworkCredential(user, password)
request.Credentials = credential
Dim keystoreFileName As String = "keystore.p12"
Dim pathCert As String = Path.Combine(Environment.CurrentDirectory, "cert\", keystoreFileName)
Dim cert As New X509Certificate(pathCert, "allpassword")
request.ClientCertificates.Add(cert)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = 39
request.Accept = "*/*"
Dim requestStream As Stream = request.GetRequestStream()
Dim post_data As String = "grant_type=password&username=&password="
Dim postBytes As Byte() = Encoding.ASCII.GetBytes(post_data)
requestStream.Write(postBytes, 0, postBytes.Length)
requestStream.Close()
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) 'Here pops the error...
Dim responseJson = New StreamReader(response.GetResponseStream()).ReadToEnd()
Return responseJson