Переведите Curl --key и --cert в VB.NET - PullRequest
0 голосов
/ 09 января 2019

Мне нужно отправить через 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
...