Bonjour,
J'aimerais pouvoir télécharger des fichiers pdf avec java, comme on sait le faire avec un navigateur internet classique.
J'ai trouvé le code d'un client HTTP et l'ai modifié un peu :
Le seul problème est que Acrobat ne veut pas ouvrir les fichiers chargés ainsi ; apparemment, en ouvrant les fichiers avec notepad, certains caractères ne sont pas les mêmes. Que peut-on faire pour ajuster le tir ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 package userInterface; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.regex.Pattern; import javax.swing.JOptionPane; public class HttpClient{ private File file; private BufferedWriter bw; private URL url; private HttpURLConnection server; /** * @param szUrl: String object for the URL */ public HttpClient(String szUrl) throws Exception { try { url = new URL(szUrl); } catch (MalformedURLException e) { throw new IllegalArgumentException("URL nvalide"); } try { String[] name = url.getFile().split(Pattern.quote("/")); file = new File(name[name.length-1]); } catch(NullPointerException e){ throw new IllegalArgumentException("Nom de fichier invalide"); } if(file.exists()){ int r = JOptionPane.showConfirmDialog(null,"Vous êtes sur le point de remplacer\n" +"le fichier \""+file.getName()+"\".\n" +"Etes-vous certain de vouloir continuer ?" ,"Remplacement de fichier" ,JOptionPane.YES_NO_OPTION); if(r == JOptionPane.YES_OPTION){ file.delete(); } else { file = null; throw new IllegalArgumentException("Ce fichier existe déjà"); } } else{ file.createNewFile(); } bw = new BufferedWriter(new FileWriter(file)); } /** * @param method: String object for client method (POST, GET,...) */ public void connect(String method) throws Exception{ try{ server = (HttpURLConnection)url.openConnection(); server.setDoInput(true); server.setDoOutput(true); server.setRequestMethod(method); server.setRequestProperty("Content-type", "text/text"); server.connect(); } catch (Exception e) { throw new Exception("Connection failed"); } } public void disconnect(){ server.disconnect(); } public void displayResponse() throws Exception{ String line; try { BufferedReader s = new BufferedReader( new InputStreamReader( server.getInputStream())); line = s.readLine(); while (line != null){ bw.write(line+"\n"); line = s.readLine(); } s.close(); } catch(Exception e){ throw new Exception("Unable to read input stream"); } } public void post(String s) throws Exception{ try { BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( server.getOutputStream())); bw.write(s, 0, s.length()); bw.flush(); bw.close(); } catch(Exception e){ throw new Exception("Unable to write to output stream"); } } public static void main(String argv[]){ if (argv.length == 0){ System.out.println("Usage: java HttpClient url\r\n"); System.exit(0); } try { HttpClient c = new HttpClient(argv[0]); c.connect("GET"); c.displayResponse(); c.disconnect(); c.connect("POST"); c.post("data=Posted request"); c.displayResponse(); c.disconnect(); c.connect("POST"); c.post("data=2nd request"); c.displayResponse(); c.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }
Merci d'avance !
Partager