Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 3.79 KB | None | 0 0
  1.  
  2. func FazerRequisicoes(numeroProcesso string) (DadosBasicosRetorno) {
  3.     fmt.Println(numeroProcesso)
  4.     //iniciando os cookies com valor null
  5.     cookieJar, err := cookiejar.New(nil)
  6.     if err != nil {
  7.         fmt.Println(err.Error())
  8.         return
  9.     }
  10.  
  11.     param := url.Values{}
  12.  
  13.     param.Add("Validar", "")
  14.     param.Add("CampoFoco", "")
  15.     param.Add("Botao", "Pesquisar")
  16.     param.Add("EstatCont", "117829495")
  17.     param.Add("C", "")
  18.     param.Add("A", "")
  19.     param.Add("UsarCaptcha", "S")
  20.     param.Add("FecharSessao", "")
  21.     param.Add("captcha", "")
  22.     param.Add("gabarito", "1")
  23.     param.Add("resposta", "1")
  24.     param.Add("Localidade", "0")
  25.     param.Add("baixado", "0")
  26.     param.Add("CodLoc", "")
  27.     param.Add("NumProc", numeroProcesso)
  28.     param.Add("CodDoc", "")
  29.     param.Add("NumProcOrig", "")
  30.     param.Add("CodOAB", "")
  31.     param.Add("CodAdv", "")
  32.     param.Add("TipDocPess", "0")
  33.     param.Add("NumDocPess", "")
  34.     param.Add("CodTipDocPess", "")
  35.     param.Add("NomeParte", "")
  36.     param.Add("NomeAdv", "")
  37.     param.Add("NumInq", "")
  38.     param.Add("captchacode", "1")
  39.  
  40.     //Primeira requisição, do tipo POST
  41.     //aqui fazemso a requisição, informando o metódo, a url e tratando as trings que estão nos parametros
  42.     req, err := http.NewRequest("POST", "https://portal.trf2.jus.br/portal/consulta/cons_procs.asp", strings.NewReader(param.Encode()))
  43.  
  44.     //aqui setamos o tipo do conteúdo da aplicação
  45.     req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
  46.  
  47.     HtppClient := &http.Client{Jar: cookieJar,
  48.         Transport: &http.Transport{ //o tls serve para ocorrer a requisição mesmo se a pagina tiver certificado invalido
  49.             TLSClientConfig: &tls.Config{
  50.                 InsecureSkipVerify: true,
  51.             },
  52.         }}
  53.  
  54.     resp, err := HtppClient.Do(req) //aqui temos a reposta da requisicao
  55.  
  56.     if err != nil { // validação da resposta da requisição
  57.         fmt.Println(err.Error())
  58.         return
  59.     }
  60.  
  61.     defer resp.Body.Close() //fechamos a primeira requisicao
  62.  
  63.     //Segunda requisição, do tipo GET
  64.     req2, err := http.NewRequest("GET", "https://portal.trf2.jus.br/portal/consulta/reslistproc.asp?SelectProc=", nil)
  65.  
  66.     resp2, err := HtppClient.Do(req2)
  67.  
  68.     if err != nil {
  69.         fmt.Println(err.Error())
  70.         return
  71.     }
  72.  
  73.     defer resp2.Body.Close() // fechamos a segunda requisição
  74.  
  75.     doc, err := goquery.NewDocumentFromReader(resp2.Body) //aqui pegamos o corpo do retorno da requisição GET
  76.  
  77.     /*
  78.        Porém, esse retorno só tras a lista a esquerda da página onde há o número do processo, cada uma
  79.        das abas possui sua url propria com seus parametros, e por isso precisamos fazer uma terceira
  80.        requisição, que no caso vai pegar os dados básicos
  81.     */
  82.  
  83.     if err != nil {
  84.         fmt.Println(err.Error())
  85.         return
  86.     }
  87.     //com esses metodos pegamos os parametros necessarios para a url de dados básicos
  88.     Cod := buscaCodProcesso(doc)
  89.     IDNumConsProc := buscaNumConsProc(doc)
  90.  
  91.     //agora com os dados necessários podemos fazer a terceira requisição
  92.     url := "https://portal.trf2.jus.br/portal/consulta/resinfoproc.asp?CodDoc=" + Cod + "&IDNumConsProc=" + IDNumConsProc + "&CodUsuWeb="
  93.  
  94.     //terceira requisição para pegar os dados básicos
  95.     req3, err := http.NewRequest("GET", url, nil)
  96.     resp3, err := HtppClient.Do(req3)
  97.  
  98.     if err != nil {
  99.         fmt.Println(err.Error())
  100.         return
  101.     }
  102.  
  103.     defer resp3.Body.Close()
  104.  
  105.     dadosBasicos, err := goquery.NewDocumentFromReader(resp3.Body)
  106.     fmt.Println(dadosBasicos.Find(".textarea_1").Text())
  107.     DadosBasicosRetorno := dadosBasicos.Find(".textarea_1").Text()
  108.     return DadosBasicosRetorno
  109. }
  110.  
  111. func buscaCodProcesso(doc *goquery.Document) string {
  112.     var cod string
  113.     doc.Find("#Procs").Each(func(indexselect int, selecthtml *goquery.Selection) {
  114.         selecthtml.Find("option").Each(func(indexopt int, optionhtml *goquery.Selection) {
  115.             val, ok := optionhtml.Attr("id")
  116.             if ok {
  117.                 cod = strings.TrimSpace(val)
  118.                 return
  119.             }
  120.         })
  121.     })
  122.     return cod
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement