JSON Datei herunterladen funktioniert nicht.

  • C#

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von J.Herbrich.

    JSON Datei herunterladen funktioniert nicht.

    Guten Tag zusammen,

    mir ist diese Frage eigentlich schon fast peinlich aber ich bekomme es irgendwie nicht hin und ich weiß auch nicht so recht wie ich nach dem Problem suchen soll:

    Ich habe einen Link welcher mir eine JSON Datei bereitstellt. Allerdings wird mir die Datei nicht im plain text geliefert sondern als HTTP Attachment?!

    Das bereitet mir Probleme diese Datei programmatisch runterzuladen und weiterzuverarbeiten.
    Versuche ich also folgendes:

    C#-Quellcode

    1. var webClient = new WebClient();
    2. string meinJSON = webClient.DownloadString("http://www.dev-c.com/nativedb/natives.json");


    bekomme ich nen leeren string zurück. Kein Fehler nix.
    Hab das ganze auch schon mit ner WebRequest versucht.
    StreamReader.ReadToEnd() liefert mit den selben leeren String wieder zurück xD

    Habe mal die Antwort vom HTTP Header mitgeschnitten vielleicht hilft das:

    Quellcode

    1. HTTP/1.1 200 OK
    2. Cache-Control: max-age=3600, private, proxy-revalidate
    3. Cache-Control: must-revalidate
    4. Connection: keep-alive
    5. Content-Description: natives.json
    6. Content-Disposition: attachment; filename=natives.json
    7. Content-Encoding: gzip
    8. Content-Length: 135910
    9. Content-Transfer-Encoding: binary
    10. Content-Type: application/octet-stream
    11. Date: Fri, 05 Jun 2015 09:59:58 GMT
    12. Expires: Thu Jun 4 09:59:58 2015 GMT
    13. Pragma: public
    14. Server: nginx/1.8.0
    15. Vary: Accept-Encoding


    Ich danke euch für eure Hilfe.
    Du musst folgendes im Header angeben:

    VB.NET-Quellcode

    1. Using wC As New WebClient()
    2. wC.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0")
    3. wC.Headers.Add("Host", "www.dev-c.com")
    4. wC.Headers.Add("Accept-Encoding","gzip, deflate, sdch")
    5. End Using


    Am Besten, Du lädst Du Datei herunter, denn diese ist komprimiert. Nutze nach dem Herunterladen die GZipStream-Klasse zum Dekomprimieren.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Ah das erklärt schonmal einiges, das heißt die Request Header mussten stimmen damit überhaupt was zurück kommt. Okey wusste ich nicht. Dankeschön.
    Das mit der GZipStream Klasse mach ich jetzt mal. Mache es dann aber so, dass ich statt dem WebClient die WebRequest Klasse nutze und dann binär auslese. Danach schnell den Stream dekomprimieren und ab die Post.
    Ich danke dir SpaceyX. :)
    Die Datei ist tatsächlich lehr, ich habe sie mal normall mit den chrome und mit den firefox geöffnet aber da kommt einach nichts nennenswertes bei raus außer eine Datei mit einer größe von 0 Bytes!

    LG, J. Herbrich

    J.Herbrich schrieb:

    Die Datei ist tatsächlich lehr
    Blödsinn.

    Die Lösung wurde ja bereits von @SpaceyX in Post #4 beschreiben.
    Es sollte aber reichen, nur den Accept-Encoding-Header auf gzip zu setzen:

    C#-Quellcode

    1. var webClient = new WebClient();
    2. webClient.Headers.Add("Accept-Encoding", "gzip");
    3. string meinJSON = webClient.DownloadString("http://www.dev-c.com/nativedb/natives.json");
    und dann halt durch den Unzipper jagen.

    Dokta schrieb:

    kannst du dir auch mal den HttpClient anschauen
    Der wird vermutlich genau gleich reagieren.

    Der Server akzeptiert nur Client-Requests, die Komprimierung erlauben.
    Das gibt's öfters, weil damit die Server-seitige Datenmenge reduziert wird.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @Markus Jacobs Wie oft willst Du denn diese Datei runterladen?
    natives.zip
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe die Datei mit Chrome und Firefox herunter geladen, Datai größe: 0 Bytes also ist sie defakto lehr, exitieren tuht sie. Wer nicht glaubt kann sie ja mal selbst in web browser herunter laden und öffnen.

    So und für alle die es tatsächlich nicht glauben Zeige ich euch einen Screenshoot (Alles unwesentliche wurde Zensiert) aber die sachen betreffend den JSON Fille sind gleich. (Es wurde mit den suffix 1 abgespeichert!)
    Bilder
    • vbp_evidence.png

      221,19 kB, 1.024×768, 142 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „J.Herbrich“ ()

    Die Datei wird vollständig runtergeladen und hat 735KB. Würde mal schwer behaupten, Du machst was falsch oder bist ein schlechter Troll.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    hmm, ok.

    Dann liegt das problem an den unterschiedlichen browser einstellungen, oder du hast die zip geladen die funktioniert^^

    LG, J. Herbrich