J'ai implémenté une application Andoid - application côté serveur. Le serveur communique avec le lecteur de carte à puce. Lorsque l'utilisateur touche le bouton dans l'application Android, une connexion est créée sur le serveur pour obtenir l'authentification de l'utilisateur. Les messages échangés entre l'application et le serveur ont le format suivant:Comment faire la différence entre une erreur de lecteur de carte à puce et une erreur de carte à puce
<type> 0x00 0x00 0x00 <length> 0x00 0x00 0x00 <[data]>
- Si le message a la valeur de type
06
qui indique une erreur dans le lecteur de carte à puce. - Si le message a la valeur de type
07
qui indique une erreur dans la carte à puce.
J'utilise le code comme ci-dessous pour la communication avec le lecteur de carte à puce:
// show the list of available terminals
TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();
System.out.println("Terminals: " + terminals);
// get the first terminal
CardTerminal terminal = terminals.get(0);
// establish a connection with the card
Card card = terminal.connect("T=0");
System.out.println("card: " + card);
CardChannel channel = card.getBasicChannel();
ResponseAPDU r = channel.transmit(new CommandAPDU(c1));
System.out.println("response: " + toString(r.getBytes()));
// disconnect
card.disconnect(false);
L'API Smart Card IO a la classe CardException
des exceptions. Mon problème est que je ne sais pas quand envoyer le message de type 06
ou 07
parce que je ne peux pas différencier entre les erreurs qui sont générées par la carte et les erreurs qui sont générées par le lecteur lorsque le CardException
est levé. Comment puis-je gérer cela?