Salve,
Ho un problema con un applet e js, uso netbeans e glassfish, quando faccio l'applet in locale funziona tutto, invece se faccio connettere un altro pc non funziona e mi da questo errore [Error] Error: Error calling method on NPObject.
encrypt (admin.html, line 53)
non risco a capire quel'e' il problema; Utilizzo i websocket infatti la connessione funziona ma non va l'applet, pero non mi torna che funziona localmente
che sbaglio?
Grazie
codice HTML:
<script language="Javascript">
function accessAppletMethod()
{
var t = "dati";
var risp = document.Applet.encrypt(t);
webSocket.send(risp);
}
var webSocket;
var messages = document.getElementById("messages");
var risultato = "";
function openSocket() {
// Ensures only one connection is open at a time
if (webSocket !== undefined && webSocket.readyState !== WebSocket.CLOSED) {
writeResponse("WebSocket is already opened.");
return;
}
// Create a new instance of the websocket
webSocket = new WebSocket("ws://pingamitutto.ddns.net:8080/bechini/socketadmin");
/**
* Binds functions to the listeners for the websocket.
*/
webSocket.onopen = function (event) {
// For reasons I can't determine, onopen gets called twice
// and the first time event.data is undefined.
// Leave a comment if you know the answer.
if (event.data === undefined)
return;
writeResponse(event.data);
};
webSocket.onmessage = function (event) {
var risp = document.Applet.encrypt(event.data.toString());//problema
webSocket.send(risultato);
alert("un lavoro completato");//here the string have the correct length
};
webSocket.onclose = function (event) {
writeResponse("Connection closed");
};
}
/**
* Sends the value of the text input to the server
*/
</script>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body onload="openSocket();">
<div id="messages">
<p> sei connesso al server a breve ti arriva materiale da elaborare</p>
</div>
<!-- C:\Users\lorenzo §\Documents\NetBeansProjects\bechini\build\web\WEB-INF\classes -->
<!--a href="../build/web/WEB-INF/classes/App.class"></a-->
<applet width="300" height="100" top="400" id="Applet" code="App.class">
</applet>
<div id="messages"></div>
</body>
questa e' l'applet
import java.applet.Applet;
import org.apache.commons.codec.binary.Base64;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import javax.swing.JOptionPane;
import netscape.javascript.JSObject;
public class App extends Applet {
public boolean encrypt(String messaggio) {
JSObject window = JSObject.getWindow(this);
String pass = messaggio.substring(0, 16);
String file = messaggio.substring(16);
byte[] byteDataToEncrypt = Base64.decodeBase64(file);
byte[] byteCipherText = null;
byte[] key = stringToByte(pass); //new byte[128/8]; ERRORE
try {
Cipher aesCipher = Cipher.getInstance("AES");//DICE INVALIDA KEY
aesCipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "AES"), aesCipher.getParameters());//DICE INVALIDA KEY
byteCipherText = aesCipher.doFinal(byteDataToEncrypt);
} catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException e) {
JOptionPane.showMessageDialog(null, "ECC " + e);
}
messaggio = Base64.encodeBase64URLSafeString(byteCipherText);
window.setMember("risultato", messaggio.substring(0, messaggio.length() / 2));
return true;
}
public static byte[] stringToByte(String s) {
byte[] b = new byte[s.length()];
for (int i = 0; i < s.length(); i++) {
b[i] = (byte) s.charAt(i);
}
return b;
}
public static String byteToString(byte[] b, int size) {
char[] c = new char[size];
for (int i = 0; i < size; i++) {
c[i] = (char) b[i];
}
return new String(c);
}
}