Je souhaite communiquer en utilisant JSON sur la page du guichet! Au fait, avec une requête cryptée ...
Définissez la clé publique sur pubKey.
myjsencrypt.js
my.jsencrypt = {
        pubKey: '-----BEGIN PUBLIC KEY-----\
Contenu de la clé publique
-----END PUBLIC KEY-----\
'
Initialiser.
myjsencrypt.js
        // encryption setting
        var encrypt = new JSEncrypt();
        encrypt.setPublicKey(my.jsencrypt.pubKey);
Lancez une demande.
myjsencrypt.js
        // request
        var xhr = new XMLHttpRequest();
        xhr.open("POST",URL de destination, true);
        xhr.setRequestHeader("content-type", "application/json");
        xhr.send( encrypt.encrypt(JSON.stringify(data)) );
Il semble y avoir différentes choses, mais jackson semblait être bon, alors j'ai essayé de l'utiliser. C'est en fait facile à utiliser. Définissez-le simplement dans pom.xml.
pom.xml
		<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.9.2</version>
		</dependency>
Récupérez la requête et faites-en un paramètre. Pour RSAUtil, reportez-vous à RSA Encryption / Decryption with java 8.
MyJsonPage.java
		RequestCycle requestCycle = getRequestCycle();
		final WebRequest webRequest = (WebRequest) getRequest();
		final HttpServletRequest rawRequest = (HttpServletRequest) webRequest.getContainerRequest();
		BufferedReader br = null;
		JsonFactory jsonFactory = new JsonFactory();
		ObjectMapper jsonMapper = new ObjectMapper(jsonFactory);
		// <Le nom du paramètre,valeur>Faire une carte de
		TypeReference<ConcurrentHashMap<String,String>> typeRef = new TypeReference<ConcurrentHashMap<String,String>>(){};
		try {
			StringBuffer sb = new StringBuffer();
			br = rawRequest.getReader();
			for (String line = br.readLine(); line != null; line = br.readLine()) {
				sb.append(line);
			}
			// decrypt RSA input
			PrivateKey privKey = RSAUtil.readPrvateKeyFromPem(Fichier de clé privée);
			String decrypted = RSAUtil.decryptWithPrivateKey(sb.toString(), privKey);
			// decrypted params to json map
			inputJsonMap = jsonMapper.readValue(decrypted, typeRef);
		} catch (Exception e) {
			/*La gestion des erreurs*/
		}
Maintenant que les paramètres ont été obtenus, procédez sur cette page ...
Préparez une méthode pour définir Content-Type.
MyJsonPage.java
	// Set content-type
	protected String getContentType() {
		final String encoding = getApplication().getRequestCycleSettings().getResponseRequestEncoding();
		return "application/json; charset=" + encoding;
	}
Renvoie le JSON du résultat.
MyJsonPage.java
		// build JSON response
		try {
			jsonResponse = jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(returnObject);
		} catch (JsonProcessingException e) {
			/*La gestion des erreurs*/
		}
		requestCycle.scheduleRequestHandlerAfterCurrent(
				new ResourceStreamRequestHandler(
					new StringResourceStream(jsonResponse)	) {
					@Override
					public void respond(IRequestCycle requestCycle) {
						((WebResponse) requestCycle.getResponse()).setContentType(getContentType());
						super.respond(requestCycle);
					}
				}
				);
C'est pratique car il convertit d'Object en JSON. PrettyPrinter est inclus car il est facile à voir.
c'est tout. Je vous remercie pour votre travail acharné!
Recommended Posts