Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func FazerRequisicoes(numeroProcesso string) (DadosBasicosRetorno) {
- fmt.Println(numeroProcesso)
- //iniciando os cookies com valor null
- cookieJar, err := cookiejar.New(nil)
- if err != nil {
- fmt.Println(err.Error())
- return
- }
- param := url.Values{}
- param.Add("Validar", "")
- param.Add("CampoFoco", "")
- param.Add("Botao", "Pesquisar")
- param.Add("EstatCont", "117829495")
- param.Add("C", "")
- param.Add("A", "")
- param.Add("UsarCaptcha", "S")
- param.Add("FecharSessao", "")
- param.Add("captcha", "")
- param.Add("gabarito", "1")
- param.Add("resposta", "1")
- param.Add("Localidade", "0")
- param.Add("baixado", "0")
- param.Add("CodLoc", "")
- param.Add("NumProc", numeroProcesso)
- param.Add("CodDoc", "")
- param.Add("NumProcOrig", "")
- param.Add("CodOAB", "")
- param.Add("CodAdv", "")
- param.Add("TipDocPess", "0")
- param.Add("NumDocPess", "")
- param.Add("CodTipDocPess", "")
- param.Add("NomeParte", "")
- param.Add("NomeAdv", "")
- param.Add("NumInq", "")
- param.Add("captchacode", "1")
- //Primeira requisição, do tipo POST
- //aqui fazemso a requisição, informando o metódo, a url e tratando as trings que estão nos parametros
- req, err := http.NewRequest("POST", "https://portal.trf2.jus.br/portal/consulta/cons_procs.asp", strings.NewReader(param.Encode()))
- //aqui setamos o tipo do conteúdo da aplicação
- req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
- HtppClient := &http.Client{Jar: cookieJar,
- Transport: &http.Transport{ //o tls serve para ocorrer a requisição mesmo se a pagina tiver certificado invalido
- TLSClientConfig: &tls.Config{
- InsecureSkipVerify: true,
- },
- }}
- resp, err := HtppClient.Do(req) //aqui temos a reposta da requisicao
- if err != nil { // validação da resposta da requisição
- fmt.Println(err.Error())
- return
- }
- defer resp.Body.Close() //fechamos a primeira requisicao
- //Segunda requisição, do tipo GET
- req2, err := http.NewRequest("GET", "https://portal.trf2.jus.br/portal/consulta/reslistproc.asp?SelectProc=", nil)
- resp2, err := HtppClient.Do(req2)
- if err != nil {
- fmt.Println(err.Error())
- return
- }
- defer resp2.Body.Close() // fechamos a segunda requisição
- doc, err := goquery.NewDocumentFromReader(resp2.Body) //aqui pegamos o corpo do retorno da requisição GET
- /*
- Porém, esse retorno só tras a lista a esquerda da página onde há o número do processo, cada uma
- das abas possui sua url propria com seus parametros, e por isso precisamos fazer uma terceira
- requisição, que no caso vai pegar os dados básicos
- */
- if err != nil {
- fmt.Println(err.Error())
- return
- }
- //com esses metodos pegamos os parametros necessarios para a url de dados básicos
- Cod := buscaCodProcesso(doc)
- IDNumConsProc := buscaNumConsProc(doc)
- //agora com os dados necessários podemos fazer a terceira requisição
- url := "https://portal.trf2.jus.br/portal/consulta/resinfoproc.asp?CodDoc=" + Cod + "&IDNumConsProc=" + IDNumConsProc + "&CodUsuWeb="
- //terceira requisição para pegar os dados básicos
- req3, err := http.NewRequest("GET", url, nil)
- resp3, err := HtppClient.Do(req3)
- if err != nil {
- fmt.Println(err.Error())
- return
- }
- defer resp3.Body.Close()
- dadosBasicos, err := goquery.NewDocumentFromReader(resp3.Body)
- fmt.Println(dadosBasicos.Find(".textarea_1").Text())
- DadosBasicosRetorno := dadosBasicos.Find(".textarea_1").Text()
- return DadosBasicosRetorno
- }
- func buscaCodProcesso(doc *goquery.Document) string {
- var cod string
- doc.Find("#Procs").Each(func(indexselect int, selecthtml *goquery.Selection) {
- selecthtml.Find("option").Each(func(indexopt int, optionhtml *goquery.Selection) {
- val, ok := optionhtml.Attr("id")
- if ok {
- cod = strings.TrimSpace(val)
- return
- }
- })
- })
- return cod
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement