C# - stáhnutí souboru přes JSON, aplikace padá

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod strangereu » 05 čer 2018 18:22

Ahoj,
dělám převážně jako PHP developer, ale náhodou jsem se dostal k C# a snažím se docílit stažení souboru z PHP array.

Jako první jsem začal s tím, že jsem udělal JSON request, který kontroluje, zda php soubor něco obsahuje, či nikoliv...
Pokud nic neobsahuje, tak není třeba cokoliv stahovat, ale pokud naopak obsahuje nějaký text, tak je nutné stáhnout text z arraye uvedené v JSON odpovědi v daném php souboru.
Ale abych nezačínal úplně hned stažením všeho z arraye, tak jsem zkusil stáhnout jednotlivý soubor pouze při odpovědi z JSONu v podmínce, ale došlo k tomu, že aplikace přestala pracovat, takže to vidím na chybu ve stahování, protože jakmile zakomentuju daný řádek, tak aplikace funguje normálně.

Zde je můj kód:

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Reflection;

namespace Letheria
{
    public partial class Letheria2 : Form
    {
        public Letheria2()
        {
            InitializeComponent();

            string latestBuild = System.IO.File.ReadAllText("latest_build"); //Přečte soubor latest_build a zjistí build klienta.

            /*System.Net.WebClient wc = new System.Net.WebClient();
            byte[] raw = wc.DownloadData("http://letheria2.cz/update.php?build=" + latestBuild);
            string dataToDownload = System.Text.Encoding.UTF8.GetString(raw);*/

            using (var webClient = new System.Net.WebClient())
            {
                var json = webClient.DownloadString("http://letheria2.cz/update.php?build=" + latestBuild); //Odešle na web aktuální build klienta, načež web vyhodnotí, zda je potřeba update, či nikoliv.
               
                if(json == "") { //Zjistí, jestli je odpověď z webu prázdná nebo obsahuje data ke stažení. Pokud obsahuje data ke stažení, tak se stáhne nová aktualizace, pokud ne, tak je klient aktuální.
                    currentBuild.Text = "Máš aktuální verzi klienta.";
                } else {
                    currentBuild.Text = json;

                    webClient.DownloadFile("http://letheria2.cz/client/koza.txt", "");
                }
            }
        }

        private void launchGame_Click(object sender, EventArgs e)
        {
   
        }

        private void launchSettings_Click(object sender, EventArgs e)
        {
            Process execGame = new Process();
            execGame.StartInfo.FileName = "Nastavení.exe";
            execGame.Start();
        }
    }
}
http://screenshare.cz/

Reklama
HondaCZE
Level 1
Level 1
Příspěvky: 51
Registrován: únor 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod HondaCZE » 05 čer 2018 19:06

Zkus to změnit na webClient.DownloadFile("http://letheria2.cz/client/", "koza.txt");

Nevím co používáš za nástroj pro vývoj, ale Visual Studio mě při zkompilování a spuštění kódu upozornilo, co je za chybu.

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod strangereu » 05 čer 2018 19:16

Paráda, takhle to funguje...
No já také používám VC, ale kvůli cestě k latest_build, která je chybná se mi zbytek chyb neukáže.

Vždy zkompiluju a .exe z Debugu přehodím na místo, kde ve výsledku bude a teprve tam zkouším.
Je to sice nepraktické, ale potřebuju mít přístup k těm souborům se kterými to pracuje a nerad bych pak ve finále měnil všechny cesty až bude vše hotové.
Výsledný exe soubor bude ve složce s hrou pro můj herní server, bude sloužit jako launcher.
http://screenshare.cz/

HondaCZE
Level 1
Level 1
Příspěvky: 51
Registrován: únor 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod HondaCZE » 05 čer 2018 19:37

A nemůžeš potřebné soubory nakopírovat do složky Debug, abys mohl kód pouštět a debugovat přímo z Visual Studia?

Ještě jedna věc. Jelikož se jedná o formulářovou aplikaci, tak pro inicializační kód se využívá metoda Form_Load, která se ti vygeneruje po dvojkliku na formulář v designeru.

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod strangereu » 06 čer 2018 17:58

To samozřejmě můžu, to je fakt...

Jen bych se tedy ještě rád zeptal, když mi PHP vyhazuje array odpověď a já bych jí chtěl v C# použít a rozdělit na 2 části, jak bych to měl provést?

Array z PHP obsahuje ID buildu generované v PHP a soubory, které byly aktualizovány, takže potřebuji v C# zadat všechny soubory do toho DownloadFile a stáhnout je a následně z PHP array vyčíst položku "id", která ukrývá id buildu, které vepíšu do souboru "latest_build".

Zkoušel jsem něco pomocí Newtonsoft, ale rád bych se vyhl používání neoriginálních knihoven atd...
http://screenshare.cz/

Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod satik » 06 čer 2018 18:19

nebo můžeš nastavit, kam se ten exáč má házet - tedy třeba do složky kde máš ty data k tomu :)

O co že se snažíš? Zatím jsem to z toho popisu nepochopil, na serveru s PHP si vygeneruješ nějaký JSON data, ty C# aplikací stáhneš a co že to chceš dál?

V těch JSON datech je seznam souborů a ty je chceš stahovat na základě porovnání nějaký podmínky?
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1719
Registrován: září 11
Bydliště: Vršovice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod strangereu » 06 čer 2018 19:05

No takhle... Jedná se o launcher herního klienta s funkcí automatické aktualizace.

Na webu se nahraje aktuální verze, resp. její upravené soubory a PHP script vyhodnotí, které soubory byly upraveny oproti předchozí verzi a na základě toho sestaví array (JSON), která je následně odeslána do aplikace v C#, kde je nutné, aby aplikace z JSON odpovědi vybrala všechny soubory, které se mají stáhnout a v druhé části vybrala položku "id", která se zapíše do souboru latest_build.

Tohle je příklad odpovědi generované webem:
json odpoved.png
json odpoved.png (2.31 KiB) Zobrazeno 1816 x
http://screenshare.cz/

Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: C# - stáhnutí souboru přes JSON, aplikace padá

Příspěvekod satik » 06 čer 2018 19:35

a v čem přesně je problem? stahnout uz ho umis, tak ted uz jen to rozparsovat na jednotlivy zaznamy a porovnat :)
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • O2 TV aplikace - NEFUNGUJE?
    od holas18 » 09 dub 2023 16:17 » v Vše ostatní (z oblasti IT)
    5
    3017
    od pcmaker Zobrazit poslední příspěvek
    21 dub 2023 18:15
  • PC po zapnutí padá do UEFI
    od embamex » 21 pro 2023 10:23 » v Problémy s hardwarem
    13
    1605
    od petr22 Zobrazit poslední příspěvek
    26 pro 2023 13:43
  • Aplikace na stabilizaci videa
    od pavel2010 » 28 led 2024 11:28 » v Design a grafické editory
    1
    721
    od petr22 Zobrazit poslední příspěvek
    28 led 2024 12:36
  • Explorer.exe - chyba aplikace 0x0000000000000024
    od Dav98786 » 31 led 2024 20:26 » v Windows 11, 10, 8...
    2
    633
    od Dav98786 Zobrazit poslední příspěvek
    01 úno 2024 09:17
  • Žlutomodrý štít u ikony aplikace w11 Příloha(y)
    od PittnerJiri » 01 srp 2023 15:03 » v Windows 11, 10, 8...
    5
    2099
    od petr22 Zobrazit poslední příspěvek
    23 zář 2023 19:16

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti