Jump to content

datilas

Membros
  • Posts

    485
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by datilas

  1. aqui eu tenho uma vps com owncloud a versão Enterprise tem um plugin que filtra arquivos por extensão o owncloud funciona como um dropbox então ele sobe o arquivo assim que possivel o que eu faço é compactar a pasta de xml's e o backup do db e altero a extensão para uma especifica ".bkx" e filtro no owncloud por essa extensão quando o cliente é infectado por um vírus a ultima versão que vai ter no meu backup é valida já que ransomware encripta o arquivo e altera a extensão, ele não afeta o arquivo que já subiu. sem contar que eu tenho total controle ao owncloud então eu posso habilitar e desabilitar um cliente sempre que necessário
  2. isso é um comportamento de keylogger dificilmente você vai conseguir que um antivírus te deixe em paz, se voce precisa de um bugtrace voce poderia usar : http://madshi.net/madExceptDescription.htm https://www.eurekalog.com/downloads_delphi.php por exemplo, mas existe outros.
  3. geralmente se voce tem username e password não vai precisar de client_id, client_secret o client_id e client_secret geralmente é usado para gerar um token e depois fazer todas as requisições com esse token quando você tem username e password não precisa do token fica até mais facil para trabalhar qual componente e versão do delphi você ta usando?
  4. dificilmente esses serviços de api tem algum exemplo em delphi, na proxima vez que vc precisar de algum suporte com alguma api (caso eles não tenham um demo em dephi) peça um manual para uso com curl, pois fica mais facil adaptar para os componentes do delphi. por exemplo: curl -X GET "https://https://api.betalabs.netapi/clients/acting-as/MyClientID/in/MyDomainID" -H "accept: application/json" -H "Authorization: myAuthorization" -H "X-CSRF-TOKEN: " GET é a operação pode ser GET, POST, PATCH, DELETE, PUT. -H é Header -data é o body etc.. ai fica mais fácil até para o suporte deles te ajudarem.
  5. Como vc pode ver aqui: curl -X GET "https://https://api.betalabs.netapi/clients/acting-as/MyClientID/in/MyDomainID" -H "accept: application/json" -H "Authorization: myAuthorization" -H "X-CSRF-TOKEN: " Você vai precisar de um Authorization que é um token gerado a partir do client_id e client_secret e um X-CSRF-TOKEN que é gerado a partir do token então entre em contato com eles e peça mais informação sobre o modo de autenticação deles. esse é o primeiro passo, depois disso é que você vai trabalhar de verdade.
  6. vc vai precisar de um client_id e um client_secret fazer uma chama a um endereço que vai retornar um token e com o token vc vai poder consumir os outros serviços nesse endereço que vc passou não existe nenhum metodo para retornar o token
  7. remova o IdHTTP1 do seu formulario e tente usar assim: Var code: Integer; sResponse: String; Json: String; JsontoSend, AResponseContent: TStringStream; iStatusCode: Integer; http: TIdHTTP; Begin Json := '{"Customer": { "DocumentType" : "CNPJ", "DocumentNumber" : "11229082000167" }, "Driver": { "PhoneCountry": "+55", "PhoneNumber": "19999690130", "Name": "Daniel Marcelo"} }'; JsonToSend := TStringStream.Create(Json); AResponseContent := TStringStream.Create(''); http := TIdHTTP.Create(Nil); Try http.Request.CharSet := 'utf-8'; http.Request.ContentType := 'application/json'; http.Request.CustomHeaders.AddValue('AppKey', '58fb05c3-4e8b-4929-b7df-95bd261035c9'); http.Request.CustomHeaders.AddValue('RequesterKey', '629eda6f-9df5-40e7-a94e-4c54cec83a15'); http.Response.ContentType := 'applicattion/json'; http.Response.CharSet := 'utf-8'; Try http.Post('https://api.tudoentregue.com.br/v1/customers/AddDriver', JsontoSend, AResponseContent); Except On E: Exception Do Begin Memo1.Lines.Clear; Memo1.Lines.Add('Error on Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Error on Response Text: ' + http.ResponseText); Memo1.Lines.Add('Error on Request: ' + sLineBreak + e.Message); exit; End; End; Memo1.Lines.Clear; Memo1.Lines.Add('Response Content: ' + AResponseContent.DataString); Memo1.Lines.Add('Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Response Text: ' + http.ResponseText); Finally JsontoSend.Free; AResponseContent.Free; http.Free; End; eu adicionei essas duas linhas: Memo1.Lines.Add('Error on Response Code: ' + InttoStr(http.ResponseCode)); Memo1.Lines.Add('Error on Response Text: ' + http.ResponseText); porque caso ResponseCode for 403,404,422 o indy vai levantar um except sendo que //IdHTTP1.ResponseCode = 403 Motorista não Relacionado. *response vazio* //IdHTTP1.ResponseCode = 404 Motorista não Localizado. *response vazio* então você não conseguiria tratar o erro de Motorista não Localizado por exemplo. caso tenha resolvido seu problema marque o post como melhor resposta clicando no sinal de no canto superior esquerdo do post
  8. se quiser usar https é só ligar um IdSSLIOHandlerSocketOpenSSL1 ao IdHTTP1 e colocar as dlls ssleay32.dll e libeay32.dll na mesma pasta da sua aplicação
  9. consegui: Json := '{"PhoneCountry": "+55", "PhoneNumber": "19999999999", "Name": "Daniel", "IMEI": "", "DeviceKey": "", "DeviceId": "",'; Json := Json + '"DeviceType": "MarcaModelo", "OSName": "Android", "OSVersion": "7.0", "Email": "[email protected]", "ZipCode": "13400000", "City": "Piracicaba", "State": "Sao Paulo", "Enable": false}'; AResponseContent := TStringStream.Create(''); JsonToSend := TStringStream.Create(utf8Encode(Json)); Try IdHTTP1.Request.Clear; IdHTTP1.Request.CharSet := 'utf-8'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.CustomHeaders.AddValue('AppKey', '58fb05c3-4e8b-4929-b7df-95bd261035c9'); IdHTTP1.Request.CustomHeaders.AddValue('RequesterKey', '629eda6f-9df5-40e7-a94e-4c54cec83a15'); IdHTTP1.Response.ContentType := 'applicattion/json'; IdHTTP1.Response.CharSet := 'utf-8'; IdHTTP1.Post('http://api.tudoentregue.com.br/v1/drivers', JsontoSend, AResponseContent); //IdHTTP1.ResponseCode = 200 Atualização de Registro. //IdHTTP1.ResponseCode = 201 Inclusão de Registro. //IdHTTP1.ResponseCode = 422 Erro de Validação. showmessage(AResponseContent.DataString); showmessage(IdHTTP1.ResponseCode.ToString); showmessage(IdHTTP1.ResponseText); Finally JsontoSend.Free(); End; de acordo com a api quando faz um post em /drivers o Response vem vazio mesmo o que valida a informação do post é o ResponseCode //IdHTTP1.ResponseCode = 200 Atualização de Registro. //IdHTTP1.ResponseCode = 201 Inclusão de Registro. //IdHTTP1.ResponseCode = 422 Erro de Validação. mas quando faz um get em /drivers ele responde os dados do motorista mas de uma boa lida na api pois os codigos do ResponseCode são muito importantes por exemplo quando faz um get em drivers: //IdHTTP1.ResponseCode = 200 Processado com Sucesso. *e vem os dados do motorista no response* //IdHTTP1.ResponseCode = 403 Motorista não Relacionado. *response vazio* //IdHTTP1.ResponseCode = 404 Motorista não Localizado. *response vazio*
  10. eu testei com o rest debuguer do delphi e funcionou. menu tools-> Rest Debuguer agora to sem tempo pra testar com o indy
  11. pra mim aparece: HTTP/1.1 422 Unprocessable Entity seu try except não esta deixando voce ver o erro
  12. voce pode testar dentro da propria api acessa: https://api.tudoentregue.com.br/Documentacao/index.html clique no botão Authorize do lado direito digite suas keys clique no botão Authorize dentro da tela que abriu feche essa tela. logo abaixo clique na primeira opção clique no botão "try it out" logo em baixo clique no botão execute vc vai ter uma resposta parecida com essa: curl -X POST "http://api.tudoentregue.com.br/v1/drivers" -H "accept: application/json" -H "AppKey: gfg" -H "RequesterKey: gdf" -H "content-type: application/json" -d "{ \"PhoneCountry\": \"+55\", \"PhoneNumber\": \"99999999999\", \"Name\": \"Motorista Exemplo\", \"IMEI\": \"999999999999999\", \"DeviceKey\": \"XXX99xXX-...\", \"DeviceId\": \"9FF9F9FFF99FFFFF9999F9FFF99999F9\", \"DeviceType\": \"MarcaModelo\", \"OSName\": \"Android\", \"OSVersion\": \"7.0\", \"Email\": \"[email protected]\", \"ZipCode\": \"99999999\", \"City\": \"Cidade do Exemplo.\", \"State\": \"Estado do Exemplo.\", \"Enable\": false}" então remova essa uses
  13. ?-não entendi mas se for isso Net.HttpClient, Net.URLClient, NetConsts;
  14. uses System.Net.HttpClient, System.Net.URLClient, System.NetConsts;
  15. eu preciso consumir um serviço do firebase: curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=[API_KEY]' \ -H 'Content-Type: application/json' \ --data-binary '{"email":"[[email protected]]","password":"[PASSWORD]","returnSecureToken":true}' com indy eu uso assim (funciona): Var lJsonStream: TStringStream; sUrlFull: String; AResponseContent: TStringStream; iStatusCode: Integer; sResponse: String; jsData: TJSONObject; Begin sUrlFull := 'https://identitytoolkit.googleapis.com/v1/accounts:' + 'signInWithPassword' + '?key=' + sAPIKEY; jsData.AddPair('email', '[email protected]'); jsData.AddPair('password', '1a2b3C'); jsData.AddPair('returnSecureToken', TJSONBool.Create(True)); lJsonStream := TStringStream.Create(UTF8Encode(jsData.ToJSON)); AResponseContent := TStringStream.Create(''); Try IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win632; x86; rv:47.0) Gecko/20100101 Firefox/47.0'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Post(sUrlFull, lJsonStream, AResponseContent); iStatusCode := IdHTTP1.ResponseCode; sResponse := AResponseContent.DataString; Finally Begin FreeAndNil(lJsonStream); FreeAndNil(AResponseContent); End; End; com Net.HttpClient eu uso assim (funciona): Var lJsonStream: TStringStream; lIdHTTP: THTTPClient; sUrlFull: String; AResponseContent: TStringStream; iStatusCode: Integer; sResponse: String; jsData: TJSONObject; Begin sUrlFull := 'https://identitytoolkit.googleapis.com/v1/accounts:' + 'signInWithPassword' + '?key=' + sAPIKEY; jsData.AddPair('email', '[email protected]'); jsData.AddPair('password', '1a2b3C'); jsData.AddPair('returnSecureToken', TJSONBool.Create(True)); lJsonStream := TStringStream.Create(UTF8Encode(jsData.ToJSON)); AResponseContent := TStringStream.Create(''); lIdHTTP := THTTPClient.Create; Try lIdHTTP.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win632; x86; rv:47.0) Gecko/20100101 Firefox/47.0'; lIdHTTP.ContentType := 'application/json'; iStatusCode := lIdHTTP.Post(sUrlFull, lJsonStream, AResponseContent).StatusCode; sResponse := AResponseContent.DataString; Finally Begin FreeAndNil(lJsonStream); FreeAndNil(AResponseContent); FreeAndNil(lIdHTTP); End; End; a pergunta é como faço isso com Synapse já tentei de vários jeitos, já procurei no Google mas não consegui.
  16. tente assim: IdHTTP1.Request.Clear; IdHTTP1.Request.CharSet := 'UTF-8'; IdHTTP1.Request.Method := 'POST'; IdHTTP1.Request.ContentType := 'application/json'; IdHTTP1.Request.CustomHeaders.AddValue('AppKey','seuAppKey'); IdHTTP1.Request.CustomHeaders.AddValue('RequesterKey','seuRequesterKey'); ou assim: Var lJsonStream: TStringStream; lIdHTTP: THTTPClient; sUrlFull: String; AResponseContent: TStringStream; istatusCode:Integer; sResposta:String; Begin lJsonStream := TStringStream.Create(aJSON); AResponseContent := TStringStream.Create(''); lIdHTTP := THTTPClient.Create; Try lIdHTTP.CustomHeaders['AppKey'] := 'seuAppKey'; lIdHTTP.CustomHeaders['RequesterKey'] := 'seuRequesterKey'; lIdHTTP.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win632; x86; rv:47.0) Gecko/20100101 Firefox/47.0'; lIdHTTP.ContentType := 'application/json'; istatusCode := lIdHTTP.Post('https://api.tudoentregue.com.br/v1/drivers', lJsonStream, AResponseContent).StatusCode; sResposta := AResponseContent.DataString; Finally Begin FreeAndNil(lJsonStream); FreeAndNil(AResponseContent); FreeAndNil(lIdHTTP); End; End; mas fica difícil testar sem as keys.
  17. eu testei quando eu tinha um celular mais antigo e funcionou, com o novo android não testei, da uma pesquisada sobre Android Permission pode ser que te ajude. ou de uma aprofundada no assunto com base nos links que te passei no post anterior. sobre permissões: http://docwiki.embarcadero.com/RADStudio/Rio/en/Android_Permission_Model se vc usa delphi menor que 10.2: https://github.com/CarlosHe/AndroidPermission não sei se o seu problema é com permissão, mas um dos principais problemas que vejo é esse por causa da permissão de usar a câmera e salvar arquivos.
  18. da uma olhada nesses links: https://youtu.be/nsYvgmQlT58 https://github.com/tdevrocks/qrcode https://blog.andreamagni.eu/2017/06/scannermapp-a-qrbarcode-scanner-app-with-delphi-zxing-and-tframestand/
  19. tente usar: Memo1.Text := RESTResponse1.JSONText;
  20. com acbr não consegui no android, mas consegui seguindo esse tutorial: http://portal.tdevrocks.com.br/2017/01/28/impressao-em-mini-impressora-bluetooth/
  21. a unica coisa parecida com isso que conheço é o remoteapp do windows server
  22. Resposta: 1- Exatamente isso o "1" seria o digito verificador ele pode ser fixo caso ele não seja valido o ACBrValidador vai gerar um digito valido pra vc 2- O ACBrInStore é um componente para ler e decodificar codigo de barras de balanças da uma olha da nos demos: Exemplos\ACBrDiversos\ACBrInStore
  23. estou respondendo aqui uma pergunta do usuario @doidopb do link pois não sou usario sac não posso responder la. no caso do produto ID = 150 TOTAL = 10,50 a barra seria "201500001050" mas como só tem 12 caracteres vamos adicionar o "1" no final ficando assim "2015000010501" agora vai o codigo: Var sMinhaBarra: String; Begin sMinhaBarra := '2015000010501'; ACBrValidador1.TipoDocto := docGTIN; ACBrValidador1.ExibeDigitoCorreto := True; ACBrValidador1.Documento := sMinhaBarra; If Not ACBrValidador1.Validar Then sMinhaBarra := Copy(sMinhaBarra, 1, 12) + ACBrValidador1.DigitoCalculado; End; assim vc pode gerar seu próprio código de barras matematicamente valido e aceito para ser lido com "ACBrInStore1" que é ótimo para essa situação
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.