Segue a função AtualizaImagem com o processamento do captcha.
Código: Selecionar todos
Function AtualizaImagem()
Local oInternet, cParm
Try
oServer:= win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0")
Catch
IIf(lUsarMiniGui, MsgInfo('Erro na Criação do Serviço'), Alert('Erro na Criação do Serviço'))
Return .f.
End
Try
oServer:Open( "GET", cUrl, .f. )
oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
oServer:SetRequestHeader( "Connection", "keep-alive" )
oServer:Send()
oServer:WaitForResponse( 10000 )
Catch
IIf(lUsarMiniGui, MsgInfo('Erro na Conexão com o Site'), Alert('Erro na Conexão com o Site'))
Return .f.
End
cHtml:= oServer:ResponseBody
cStringCookie:= oServer:getResponseHeader("Set-Cookie")
nInie := At('id="ctl00_ContentPlaceHolder1_lblMensagemErro">', cHtml) + 47
If nInie > 47
cHtml1 := SubStr( cHtml, nInie)
nFime := At('</span>', cHtml1) - 1
cMsgErro:= SubStr(cHtml, nInie, nFime)
If ! Empty(cMsgErro)
IIf(lUsarMiniGui, MsgInfo(cMsgErro, 'Erro no Site ' + cUrl), Alert(cMsgErro, 'Erro no Site ' + cUrl))
Return .f.
EndIf
EndIf
nIni := At('id="__VIEWSTATE" value=', cHtml) + 24
cHtml1:= SubStr( cHtml, nIni)
nFim := At('" />', cHtml1) - 1
cViewState:= SubStr(cHtml, nIni, nFim)
nIni1 := At('id="__EVENTVALIDATION" value="', cHtml) + 30
cHtml1:= SubStr( cHtml, nIni1)
nFim1 := At('" />', cHtml1) - 1
cEeventValidation:= SubStr(cHtml, nIni1, nFim1)
nIni2 := At('id="__VIEWSTATEGENERATOR" value="', cHtml) + 33
cHtml1:= SubStr( cHtml, nIni2)
nFim2 := At('" />', cHtml1) - 1
cViewStateGenerator:= SubStr(cHtml, nIni2, nFim2)
nIni3 := At('id="ctl00_ContentPlaceHolder1_token" value="', cHtml) + 44
cHtml1:= SubStr( cHtml, nIni3)
nFim3 := At('" />', cHtml1) - 1
cHiddenToken:= SubStr(cHtml, nIni3, nFim3)
nIni4 := At('id="ctl00_ContentPlaceHolder1_captchaSom" value="', cHtml) + 49
cHtml1:= SubStr( cHtml, nIni4)
nFim4 := At('" />', cHtml1) - 1
cHiddenSom:= SubStr(cHtml, nIni4, nFim4)
nIni := At('data:image/png;base64,', cHtml) + 22
cHtml1:= SubStr(cHtml, nIni)
nFim := At('" />', cHtml1) - 1
cFile:= SubStr(cHtml, nIni, nFim)
txt_file:=fcreate("captcha.png", 0)
If (!(ferror() = 0))
IIf(lUsarMiniGui, MsgInfo("Erro de criacao do arquivo de imagem " + Str(ferror(), 3, 0)), Alert("Erro de criacao do arquivo de imagem " + Str(ferror(), 3, 0)))
Return .f.
EndIf
cCodigo:= SubStr(cHtml, nIni, nFim)
If Empty(cCodigo)
IIf(lUsarMiniGui, MsgInfo("Erro de criacao do arquivo de imagem"), Alert("Erro de criacao do arquivo de imagem"))
Return .f.
EndIf
/* PROCESSA A IMAGEM */
cParm:= {{"img", cFile}}
Try
oInternet:= TIPClientHTTP():New("http://35.184.33.72:8000/predict_rfb", .f.)
oInternet:nConnTimeout:= 10000
Catch
IIf(lUsarMiniGui, MsgInfo('Erro na criação do serviço'), Alert('Erro na Criação do Serviço'))
Return .f.
End
If oInternet:Open()
If oInternet:POST(cParm)
cHtml:= oInternet:ReadAll()
Else
IIf(lUsarMiniGui, MsgInfo('Erro na criacao do arquivo de imagem', 'Aviso do Sistema'), Alert('Erro na criação do arquivo de imagem', 'Aviso do Sistema'))
Return .F.
EndIf
Else
IIf(lUsarMiniGui, msgInfo('Erro na Conexão'), Alert('Erro na Conexão'))
Return .f.
EndIf
cHtml := StrTran(cHtml, '["', '')
cHtml := StrTran(cHtml, '"]', '')
principal.oTxt_captcha.Value:=cHtml
/* FIM */
cFile:= hb_base64Decode(cFile, cCodigo)
FWrite(txt_file, cFile)
FClose(txt_file)
SetProperty ('principal', 'oImg_captcha', 'Picture', 'Captcha.png')
principal.Button_1.Enabled:=.T.
Return .t.