Avatar billede Driton Seniormester
16. januar 2020 - 10:19 Der er 4 kommentarer og
1 løsning

HttpWebRequest - Modtagelse af pdf fil

Hvordan vil man håndtere en pdf fil der kommer igennem HttpWebRequest. Jeg har prøvet nogle løsninger og jeg kan formåede at gemme filen. Men kan desværre ikke åbne den (får fejl). Men hvis jeg åbner den igennem notepad, så kan jeg se hele filen. f.eks

<ShipmentResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ConsignmentId>YN1KXUEB</ConsignmentId><PDF>JVBERi0xLjQKJeLjz9MKMSAw...</PDF><Parcels><ParcelResponse><UniqueNumber>YN1KXUEB</UniqueNumber><ParcelNumber>03433303075</ParcelNumber><NdiNumber /><Routing><Primary2D>ADK0048DK00262080034333208a788ChDYN1KXUEBBB          1KBH204S2400  0008000100103433303075          03433303075          </Primary2D><Secondary2D>A\7CSoftcode\7CMågevej 65\7CKBH\7C    \7C\7C\7C                                                                              </Secondary2D><NationalRef>03433303075</NationalRef></Routing></ParcelResponse></Parcels></ShipmentResponse>

Kodet jeg har anvendt.

var fileName = reader["OrdreID"].ToString();


                byte[] lnBuffer;
                byte[] lnFile;

                using (WebResponse response = req.GetResponse())
                {
                    using (BinaryReader lxBR = new BinaryReader(response.GetResponseStream()))
                    {
                        using (MemoryStream lxMS = new MemoryStream())
                        {
                            lnBuffer = lxBR.ReadBytes(1024);
                            while (lnBuffer.Length > 0)
                            {
                                lxMS.Write(lnBuffer, 0, lnBuffer.Length);
                                lnBuffer = lxBR.ReadBytes(1024);
                            }
                            lnFile = new byte[(int)lxMS.Length];
                            lxMS.Position = 0;
                            lxMS.Read(lnFile, 0, lnFile.Length);
                        }
                    }
                }

                using (System.IO.FileStream lxFS = new FileStream(Server.MapPath("../PDF/" +fileName+".pdf"), FileMode.Create))
                {
                    lxFS.Write(lnFile, 0, lnFile.Length);
                }
Avatar billede Driton Seniormester
16. januar 2020 - 10:37 #1
http://api.gls.dk/ws/Help/Api/POST-languagecode-version-CreateShipment

som det fremgår her, får jeg en base64 encode pdf
Avatar billede arne_v Ekspert
16. januar 2020 - 16:11 #2
Jeg ser ingen PDF kun XML.

:-)
Avatar billede arne_v Ekspert
16. januar 2020 - 16:14 #3
Men din kode ser meget mystisk ud.
Avatar billede arne_v Ekspert
16. januar 2020 - 16:16 #4
Jeg ville bare have to streams:
* response.GetResponseStream()
* new MemoryStream

Og saa laese fra den ene og skrive til den anden.
Avatar billede Driton Seniormester
16. januar 2020 - 17:14 #5
Haha @Arne. Det fordi jeg havde ingen ide, hvordan man håndterede det.

Men fandt ud af jeg skulle først håndtere xml filen og derefter hente base64 encoded koden fra xml'en og så decode den til byte og derefter gemme den som pdf.

Jeg havde ingen ide hvad jeg lavede i starten.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester