Выполнение запроса Post с использованием c # для автоматизации генератора документов - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно сделать сообщение для автоматизации генератора документов.Существует форма со многими полями, затем пользователь заполняет и загружает PDF-документ.С расширением Firefox HTTP Header Live я получил содержание Post:

http://licenciamento.detran.ma.gov.br/Formularios/consulta/ProcuracaoPF.xhtml
Host: licenciamento.detran.ma.gov.br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-BR,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://licenciamento.detran.ma.gov.br/Formularios/consulta/ProcuracaoPF.xhtml
Content-Type: multipart/form-data; boundary=---------------------------191411188326270
Content-Length: 5675
Cookie: JSESSIONID=3B4086C929E8460DA8DA3FBA28F52601; _ga=GA1.4.468626876.1543266161; _gid=GA1.4.298515823.1543266161; ROUTEID=.6
Connection: keep-alive
Upgrade-Insecure-Requests: 1
j_idt38=j_idt38&ListaItens=&j_idt38:j_idt43_input=&j_idt38:j_idt45=1&j_idt38:j_idt47=2&j_idt38:j_idt49=3&j_idt38:j_idt51=4&j_idt38:j_idt53=5&j_idt38:j_idt55=6&j_idt38:j_idt57=7&j_idt38:j_idt59=8&j_idt38:j_idt61=9&j_idt38:j_idt63=10&j_idt38:j_idt65=11&j_idt38:j_idt67=12&j_idt38:j_idt69=13&j_idt38:j_idt71=14&j_idt38:j_idt73=15&j_idt38:j_idt75=16&j_idt38:j_idt77=17&j_idt38:j_idt79=18&j_idt38:j_idt81=19&j_idt38:j_idt83=20&j_idt38:j_idt85=21&j_idt38:j_idt87=22&j_idt38:j_idt89=23&j_idt38:j_idt91=24&j_idt38:j_idt93=25&j_idt38:j_idt95=26&j_idt38:j_idt97=27&j_idt38:j_idt99=28&j_idt38:j_idt101=29&j_idt38:j_idt103=30&j_idt38:j_idt105=31&j_idt38:j_idt107=32&j_idt38:j_idt109=33&j_idt38:j_idt111=34&j_idt38:j_idt113=35&j_idt38:j_idt115=36&j_idt38:j_idt117=37&j_idt38:j_idt119=38&j_idt38:j_idt121=39&j_idt38:j_idt123=40&j_idt38:j_idt125=41&j_idt38:j_idt127=42&j_idt38:j_idt129=43&j_idt38:j_idt131=44&j_idt38:drpUf_focus=&j_idt38:drpUf_input=ACAILANDIA&j_idt38:btnGeraDocumento=&javax.faces.ViewState=7850272665638996942:-3126694755474067047
POST: HTTP/1.1 200 OK
Date: Mon, 26 Nov 2018 21:05:50 GMT
Content-Type: text/html;charset=UTF-8
Connection: close
Transfer-Encoding: chunked

Итак, я придумал тест на c # с GET, чтобы получить куки, и POST, чтобы получить нужный документ, код ниже:

var values = new Dictionary<string, string>
        {
            {"j_idt38", "j_idt38"},
            {"ListaItens", string.Empty},
            {"j_idt38:j_idt43_input", string.Empty},
            {"j_idt38:j_idt45", "1"},
            {"j_idt38:j_idt47", "2"},
            {"j_idt38:j_idt49", "3"},
            {"j_idt38:j_idt51", "4"},
            {"j_idt38:j_idt53", "5"},
            {"j_idt38:j_idt55", "6"},
            {"j_idt38:j_idt57", "7"},
            {"j_idt38:j_idt59", "8"},
            {"j_idt38:j_idt61", "9"},
            {"j_idt38:j_idt63", "10"},
            {"j_idt38:j_idt65", "11"},
            {"j_idt38:j_idt67", "12"},
            {"j_idt38:j_idt69", "13"},
            {"j_idt38:j_idt71", "14"},
            {"j_idt38:j_idt73", "15"},
            {"j_idt38:j_idt75", "16"},
            {"j_idt38:j_idt77", "17"},
            {"j_idt38:j_idt79", "18"},
            {"j_idt38:j_idt81", "19"},
            {"j_idt38:j_idt83", "20"},
            {"j_idt38:j_idt85", "21"},
            {"j_idt38:j_idt87", "22"},
            {"j_idt38:j_idt89", "23"},
            {"j_idt38:j_idt91", "24"},
            {"j_idt38:j_idt93", "25"},
            {"j_idt38:j_idt95", "26"},
            {"j_idt38:j_idt97", "27"},
            {"j_idt38:j_idt99", "28"},
            {"j_idt38:j_idt101", "29"},
            {"j_idt38:j_idt103", "30"},
            {"j_idt38:j_idt105", "31"},
            {"j_idt38:j_idt107", "32"},
            {"j_idt38:j_idt109", "33"},
            {"j_idt38:j_idt111", "34"},
            {"j_idt38:j_idt113", "35"},
            {"j_idt38:j_idt115", "36"},
            {"j_idt38:j_idt117", "37"},
            {"j_idt38:j_idt119", "38"},
            {"j_idt38:j_idt121", "39"},
            {"j_idt38:j_idt123", "40"},
            {"j_idt38:j_idt125", "41"},
            {"j_idt38:j_idt127", "42"},
            {"j_idt38:j_idt129", "43"},
            {"j_idt38:j_idt131", "44"},
            {"j_idt38:drpUf_focus", string.Empty},
            {"j_idt38:drpUf_input", "ACAILANDIA"},
            {"j_idt38:btnGeraDocumento", string.Empty},
            {"javax.faces.ViewState", "7850272665638996942:-3126694755474067047"}
        };
        var baseAddress =
            new Uri("http://licenciamento.detran.ma.gov.br/Formularios/consulta/ProcuracaoPF.xhtml");

        var cookieContainer = new CookieContainer();

        using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
        using (var client = new HttpClient(handler) {BaseAddress = baseAddress})
        {
            var getContent = await client.GetAsync(baseAddress);
            var getString  = await client.GetStringAsync(baseAddress);
            var cookies = cookieContainer.GetCookies(baseAddress).Cast<Cookie>().ToList();

            var content = new FormUrlEncodedContent(values);
            var postContent = content.ReadAsStringAsync();
            var response = await client.PostAsync(baseAddress, content);
            var responseString = await response.Content.ReadAsStringAsync();
        }
    }

responseString из POST возвращает ошибку HTTP Status 500.Я обнаружил «javax.faces.ViewState = 7850272665638996942: -312669475547406704» из содержимого публикации, которое я не знаю, что это такое и как его заполнить.

Чего мне не хватает?

Спасибо за любую помощь!

...