Ciao a tutti ragazzi, mi serviva un aiuto per questo problema di java; devo riuscire a trovare alcuni campi in un pacchetto Sip che alla fine è rappresentato da una semplice stringa:
in questa stringa (immaginate che ad ogni accapo c'è un \n ovviamente) mi serve trovare il valore di realm e di nonce. Avevo pensato ad uno split della stringa ma non riesco a trovare una regexp adatta...non essendo esperto di java non so se esiste una specie di funzione tipo C che permette di leggere da una stringa come la "sscanf()".codice:SIP/2.0 401 Unauthorized From: <sip:test@192.168.1.107> To: <sip:test@192.168.1.107>;tag=as1a02a93a Call-ID: 2537450899 CSeq: 1 REGISTER User-Agent: Asterisk PBX Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="2a78aad2" Content-Length: 0
Altrimenti si può impostare una semplice ricerca tramite vari if testando carattere per carattere fino a quando non si trova la sequenza desiderata...più o meno così:
però mi sembra una cosa mooolto grezza...molto C-style...e poi quel ciclo while() impostato in quel modo...non mi piace proprio!!codice:public String find_nonce ( String tmp ) { String nn = new String(); int i=0; while ( 1 == 1 ) { if ( tmp.charAt(i) == 'n' ) { i++; if ( tmp.charAt(i) == 'o' ) { i++; if ( tmp.charAt(i) == 'n' ) { i++; if ( tmp.charAt(i) == 'c' ) { i++; if ( tmp.charAt(i) == 'e' ) { System.out.println("Trovato"); i=i+2; while ( tmp.charAt(i) != '\r' ) { nn = nn + tmp.charAt(i); i++; } return nn; } i++; } i++; } i++; } i++; } i++; } }
Se qualcuno ha una idea migliore...grazie mille ragazzi...

Rispondi quotando