Per HTTP POST Bild downloaden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von SpieleArenaORG.

    Per HTTP POST Bild downloaden

    Huhu,

    erstmal danke dass du dir dass gerade durchliest und dann direckt zu meinem Problem:

    Also ich habe ein bild das je nach POST angaben variert... dass ist mein bisheriges script

    VB.NET-Quellcode

    1. While Not usertmp = useriwas
    2. Using client As New Net.WebClient
    3. Dim reqparm As New Specialized.NameValueCollection
    4. reqparm.Add("user", user)
    5. reqparm.Add("pass", pass)
    6. reqparm.Add("do", "13")
    7. reqparm.Add("name", arraytmp(usertmp))
    8. Dim responsebytes = client.UploadValues("http://" + server + "/spieleinterface.php", "POST", reqparm)
    9. Dim filecontent = (New Text.UTF8Encoding).GetString(responsebytes)
    10. 'Hier muss es gespeichert werden als IO.Path.GetTempPath + "mcskulltmp.png"
    11. Dim img = Image.FromFile(IO.Path.GetTempPath + "mcskulltmp.png")
    12. img.Save(IO.Path.GetTempPath + "mcskulltmp.bmp")
    13. Dim Bmap As New Bitmap(IO.Path.GetTempPath + "mcskulltmp.bmp")
    14. Clipboard.SetImage(Bmap)
    15. RichTextBox2.Paste()
    16. Kill(IO.Path.GetTempPath + "mcskulltmp.png")
    17. Kill(IO.Path.GetTempPath + "mcskulltmp.bmp")
    18. usertmp = usertmp + 1
    19. End Using
    20. End While


    EDIT:

    Ich bin noch so weit gekommen:

    VB.NET-Quellcode

    1. While Not usertmp = useriwas
    2. Using client As New Net.WebClient
    3. Dim reqparma As New Specialized.NameValueCollection
    4. reqparma.Add("user", user)
    5. reqparma.Add("pass", pass)
    6. reqparma.Add("do", "11")
    7. reqparma.Add("uuid", arraytmp(usertmp))
    8. Dim responsebytesa = client.UploadValues("http://" + server + "/spieleinterface.php", "POST", reqparma)
    9. Dim username = (New Text.ASCIIEncoding).GetString(responsebytesa)
    10. Dim reqparm As New Specialized.NameValueCollection
    11. reqparm.Add("user", user)
    12. reqparm.Add("pass", pass)
    13. reqparm.Add("do", "13")
    14. reqparm.Add("name", username)
    15. Dim responsebytes = client.UploadValues("http://" + server + "/spieleinterface.php", "POST", reqparm)
    16. Dim filecontent = (New Text.ASCIIEncoding).GetString(responsebytes)
    17. Dim Ansi As Encoding = Encoding.GetEncoding(1252)
    18. My.Computer.FileSystem.WriteAllText(IO.Path.GetTempPath + "mcskulltmp.png", Ansi.GetString(responsebytes), False)
    19. Dim img = Image.FromFile(IO.Path.GetTempPath + "mcskulltmp.png")
    20. img.Save(IO.Path.GetTempPath + "mcskulltmp.bmp")
    21. Dim Bmap As New Bitmap(IO.Path.GetTempPath + "mcskulltmp.bmp")
    22. Clipboard.SetImage(Bmap)
    23. RichTextBox2.Paste()
    24. Kill(IO.Path.GetTempPath + "mcskulltmp.png")
    25. Kill(IO.Path.GetTempPath + "mcskulltmp.bmp")
    26. usertmp = usertmp + 1
    27. End Using
    28. End While


    Problem:

    SO soll es sein (ausgabe)

    Quellcode

    1. ‰PNG
    2. IHDR d d ÿ€ fIDATxœìÙÁIdQ@ÑùC3£ ÁA€¦aæ îMÁHL@ãq!ŠÐ†Ðuᡈ笋G÷¥6ÅߝýYääx·dfèåõcáØÄßUýbbbbbbbbbb£KmxÐ}ñm¸Ðð~´YXXXXXXXXXXXÁnáõ;[øÉsøÔÂÓÝfbbbbbbbbbb+oÃLJëƒ3çW÷“§žÃ?h³±±±±±±±±±±±‚ííéö»Ãa³±±±±±±±±±±‚ÑÇÅ7“±mÛÎ,<Eÿ_ŽžÚï÷gÞŸï&OÙ¬@¬@¬@¬@¬@¬@¬@¬@¬@¬@¬@¬ÀGÖÀfbbbbbbbbbbbbbbbbbbbbbbbŸ ÿÿdÔ#êñ'Y% IEND®B`‚


    So ist es:

    Quellcode

    1. ‰PNG
    2. IHDR d d ÿ€ fIDATxœìÙÁIdQ@ÑùC3£ ÁA€¦aæ îMÁHL@ãq!ŠÐ†Ðuᡈ笋G÷¥6ÅߝýYääx·dfèåõcáØÄßUýbbbbbbbbbb£KmxÐ}ñm¸Ðð~´YXXXXXXXXXXXÁnáõ;[øÉsøÔÂÓÝfbbbbbbbbbb+oÃLJëƒ3çW÷“§žÃ?h³±±±±±±±±±±±‚ííéö»Ãa³±±±±±±±±±±‚ÑÇÅ7“±mÛÎ,<Eÿ_ŽžÚï÷gÞŸï&OÙ¬@¬@¬@¬@¬@¬@¬@¬@¬@¬@¬@¬ÀGÖÀfbbbbbbbbbbbbbbbbbbbbbbbŸ ÿÿdÔ#êñ'Y% IEND®B`‚

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „SpieleArenaORG“ ()

    kannst du nochmal zwei neue generieren ?
    Weil ich hab es nochmal geprüft und bei mir sind die Identisch :/
    und wenn liegt der fehler hier

    VB.NET-Quellcode

    1. (New Text.ASCIIEncoding).GetString(responsebytes)

    nutz mal

    VB.NET-Quellcode

    1. Encoding. 'anstatt text ...
    und wenn liegt der fehler hier

    @Facebamm Wie ist das gemein?

    kannst du nochmal zwei neue generieren ?

    Neu generiert, selbes ergebniss!

    EDIT:

    VB.NET-Quellcode

    1. (New Text.ASCIIEncoding).GetString(responsebytes)


    ist nur noch ein überbleibsel eines versuches

    Das wird aktuell genutzt

    VB.NET-Quellcode

    1. Dim Ansi As Encoding = Encoding.GetEncoding(1252)
    2. My.Computer.FileSystem.WriteAllText(IO.Path.GetTempPath + "mcskulltmp.png", Ansi.GetString(responsebytes), False)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SpieleArenaORG“ ()

    Problem selber gelöst!

    Nach langem rumprobieren und VIEL googlen hab ich selber gelöst!

    Hier die lösung für leute mit ähnlichem problem:

    VB.NET-Quellcode

    1. While Not usertmp = useriwas
    2. Using client As New Net.WebClient
    3. Dim reqparma As New Specialized.NameValueCollection
    4. reqparma.Add("user", user)
    5. reqparma.Add("pass", pass)
    6. reqparma.Add("do", "11")
    7. reqparma.Add("uuid", arraytmp(usertmp))
    8. Dim responsebytesa = client.UploadValues("http://" + server + "/spieleinterface.php", "POST", reqparma)
    9. Dim username = (New Text.ASCIIEncoding).GetString(responsebytesa)
    10. Dim reqparm As New Specialized.NameValueCollection
    11. reqparm.Add("user", user)
    12. reqparm.Add("pass", pass)
    13. reqparm.Add("do", "13")
    14. reqparm.Add("name", username)
    15. Dim responsebytes = client.UploadValues("http://" + server + "/spieleinterface.php", "POST", reqparm)
    16. Dim bytearray() As Byte = responsebytes
    17. Dim tmpimg As Image
    18. Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream(bytearray)
    19. tmpimg = System.Drawing.Image.FromStream(ms)
    20. tmpimg.Save(IO.Path.GetTempPath + "mcskulltmp.png")
    21. Console.WriteLine(IO.Path.GetTempPath)
    22. Dim img = Image.FromFile(IO.Path.GetTempPath + "mcskulltmp.png")
    23. img.Save(IO.Path.GetTempPath + "mcskulltmp.bmp")
    24. Dim Bmap As New Bitmap(IO.Path.GetTempPath + "mcskulltmp.bmp")
    25. Clipboard.SetImage(Bmap)
    26. RichTextBox2.Paste()
    27. My.Computer.FileSystem.DeleteFile(IO.Path.GetTempPath + "mcskulltmp.png")
    28. My.Computer.FileSystem.DeleteFile(IO.Path.GetTempPath + "mcskulltmp.bmp")
    29. usertmp = usertmp + 1
    30. End Using
    31. End While


    Trozdem danke an @Facebamm :)
    Warum konvertierst du die Daten in ein String/schreibst die in ein MemoryStream, dann in ein Bild und speicherst das Bild?
    System.IO.File.WriteAllBytes(string, byte[])