2017-08-03 1 views
2

J'utilise la classe HTTP-Request-for-Processing de Rune Madson et Daniel Shiffman pour traiter GetRequest et PostRequest pour une utilisation avec un site OAuth.Comment authentifier un certificat pour la classe HTTP Request de traitement

type I dans le bon URL et les paramètres à traiter:

GetRequest req = new GetRequest("https://www.afakesite.com/oauth2/token"); 
req.addHeader("grant_type","authorization_code"); 
req.addHeader("client_id",ID); 
req.addHeader("client_secret",fancyClientSecret); 
req.addHeader("code",authorizationCode); 
req.send(); 

mais je suis accueilli avec ces erreurs:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 

J'ai aussi essayé d'utiliser la méthode de traitement:

loadJSONObject("https://www.afakesite.com/oauth2/token?grant_type=authorization_code&client_id=...") 

Qui fonctionne avec succès En raison de l'erreur ci-dessus, je sais que le site renvoie des données, mais je souhaite également utiliser la classe PostRequest pour soumettre des fichiers au site. Cette commande ne rapporte pas non plus une erreur 400 avec le fichier JSON attaché que le site donne mais la supprime à la place et me donne une exception.


Alors, comment dois-je aller sur Authentifier cette demande dans le traitement et s'il est impossible ou trop compliqué, comment dois-je aller sur l'envoi de fichiers sur ce site.

Le site que j'essaie d'authentifier est DeviantArt si cette information est utile de quelque façon que ce soit.

+0

Pouvez-vous le faire fonctionner sans utiliser la bibliothèque , en utilisant simplement la classe Java 'HttpsUrlConnection' standard? –

+0

@KevinWorkman Heureusement HttpsUrlConnection fonctionne sans erreur et analyse correctement. Je ne pouvais pas vraiment trouver un tutoriel à publier, mais je me suis rendu compte que je peux tout encoder comme une URL et le pousser dans loadJSONObject – CrazyInfin8

Répondre

2

Je vous recommande d'essayer de faire fonctionner quelque chose sans la bibliothèque. Vous pouvez simplement utiliser le HttpsUrlConnection de la norme Java API.

Voici un petit exemple que les messages des données à une URL:

import javax.net.ssl.HttpsURLConnection; 
import java.io.OutputStreamWriter; 
import java.net.URL; 

HttpsURLConnection connection = (HttpsURLConnection) new URL("https://example.com").openConnection(); 
connection.setRequestMethod("POST"); 
connection.setDoOutput(true); 

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); 
writer.write("param1=Data for param1"); 
writer.write("&param2=Data for param2"); //Ampersand is necessary for more than one parameter 
writer.write("&param3=Data for param3"); 
writer.flush(); 

int responseCode = connection.getResponseCode(); 
if(responseCode == 200){ 
    System.out.println("POST was successful!"); 
} 
else{ 
    System.out.println("Error: " + responseCode); 
} 

auto-promotion sans vergogne: Il y a quelques exemples (y compris l'authentification spécifiant) disponibles here.

Si vous pouvez obtenir ce fonctionnement, alors vous savez que c'est quelque chose de bancal avec la bibliothèque elle-même. Et honnêtement, juste faire le post vous-même ne prend pas beaucoup de lignes de code, donc vous pouvez probablement vous débarrasser complètement de la bibliothèque.


EDIT traitement ne sera pas compiler le code en raison d'un MalformedURLException qui peut être évité en enrobant dans un « essayer » bloc -à-dire

try { 
    HttpsURLConnection connection = (HttpsURLConnection) new URL("https://example.com").openConnection(); 
    //so on and so forth... 
} catch(Exception e) {}