Bonjour.
Voilà le contexte : J'ai un site Web A qui doit afficher des PDF provenant d'une application Extranet B. Mon serveur Web A "voit" B, mais le client (navigateur) lui ne le voit pas. B propose un service qui renvoi un fichier PDF. Le but est que le client puisse afficher ce PDF dans son navigateur. Il faut donc que A lise le flux Http envoyé par B et le retransmette à A.
J'ai donc mis le code suivant dans une page Web de A :
Code C# : 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 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:2862/Duplicata/Default.aspx"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; ASCIIEncoding encoding = new ASCIIEncoding(); string postData = string.Format("demande={0}", "mondoc"); byte[] data = encoding.GetBytes(postData); request.ContentLength = data.Length; using (Stream streamData = request.GetRequestStream()) { streamData.Write(data, 0, data.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/pdf"; Response.Charset = ""; Stream reader =response.GetResponseStream(); Stream writer = Response.OutputStream; byte[] buffer = new byte[1024]; while ((reader.Read(buffer, 0, buffer.Length) > 0)) { writer.Write(buffer, 0, buffer.Length); } reader.Close(); reader.Dispose(); response.Close(); Response.Flush(); Response.Close(); }
Seulement mon document PDF ne s'ouvre pas. Pourtant ma fenêtre de navigateur "change" bien avec les contour de Acrobat Reader, mais pas de contenu dedans.
J'ai essayé d'enregistrer mon PDF dans un fichier avant de le mettre dans le flux. Le fichier se créé, mais quand je l'ouvre il me dis qu'il est endommagé.
En comparant les flux Http avec Fiddler, la seule différence que je vois entre le flux PDF de B et celui qu'envoi A au client, c'est le contentLength, plus gros de 141 octets entre A et le client. Sinon, le flux est identique (la partie correspondant au PDF à l'air OK et la taille aussi).
Je ne comprends pas pourquoi ça ne fonctionne pas. Des idées ??
Meci
Partager