Restsharp Войти и скачать в vb.net - PullRequest
0 голосов
/ 08 марта 2019

Я использую restsharp в vb.net для подготовки программы для входа на сайт (первая часть) и загрузки файлов (вторая часть). Код хорош в первой части, но он не работает во второй части. Код показан ниже:

1st Part:

 Dim client = New RestClient("https://example.com")
 client.CookieContainer = New System.Net.CookieContainer()
 client.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
 client.ClientCertificates = New X509CertificateCollection
 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
 Dim Request_Login = New RestRequest("/loginProcess", Method.POST)

 Request_Login.RequestFormat = DataFormat.Json
 Request_Login.AddHeader("Accept", "application/json, text/javascript, */*; q=0.01")
 Request_Login.AddParameter("loginName", "ABC") 
 Request_Login.AddParameter("loginPwd", "Hello") 
 Dim Response_Login As IRestResponse = client.Execute(Request_Login)
    For Each cookie In Response_Login.Cookies
        Request_Login.AddCookie(cookie.Name, cookie.Value)
    Next
 Console.WriteLine(Response_Login.Content)

2nd part:
    Dim Request_Image As New RestRequest(Method.GET)
    Request_Image.Resource = "/getImage?imageId=abcdefghijkmnopq123" & "&pageNo=1"

    Request_Image.AddHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
    Request_Image.AddHeader("Accept-encoding", "gzip, deflate, br")

    Dim SAVE_Path = "D:\" 
    Dim Response_Image As IRestResponse = client.Execute(Request_Image)
    client.DownloadData(Request_Image).SaveAs(SAVE_Path & "\1") ' & ".jpg")
    Console.WriteLine(Response_Image.Content)

1-й и 2-й коды непрерывны. При запуске 2-й части требуется вход в систему в соответствии с Fiddler (даже получить успех из 1-й части), но кажется, что вход в систему не работает в этой части. Вторая часть перенаправлена ​​на страницу входа. И файл не может быть загружен.

Я пытался использовать client.FollowRedirects = False, но все еще не работает. Я предполагаю, что аккаунт вышел из системы во время выполнения второй части.

Может ли кто-нибудь помочь мне исправить это, пожалуйста? Извините за мой плохой английский!

   POST https://example.com/loginProcess HTTP/1.1
    Accept: application/json, text/javascript, */*; q=0.01
    Authorization: Basic ZGFyazRqX2lnbm9yYW5jZUBob3RtYWlsLmNvbTpXZWxjb21lMTE4
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36
    Content-Type: application/x-www-form-urlencoded
    Host: example.com
    Content-Length: 60
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive

    loginName=ABC&loginPwd=Hello
...