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: 1588
Registrován: září 11
Bydliště: Birmingham, United Kingdom
Pohlaví: Muž

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();
        }
    }
}


Back-end webdeveloper

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

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: 1588
Registrován: září 11
Bydliště: Birmingham, United Kingdom
Pohlaví: Muž

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.
Back-end webdeveloper

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

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: 1588
Registrován: září 11
Bydliště: Birmingham, United Kingdom
Pohlaví: Muž

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...
Back-end webdeveloper

Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 2971
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

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?
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: Intel Core i7 8700K@5GHz+EK KIT L360, ASUS Maximus X HERO, 32GB RAM@3466, MSI GTX 1080Ti Gaming, Fractal Define S, Seasonic P860, SSD 2TB celkem
Periferie: 3x AOC AG271QG (1440p 165Hz IPS), Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB

Uživatelský avatar
strangereu
Level 4.5
Level 4.5
Příspěvky: 1588
Registrován: září 11
Bydliště: Birmingham, United Kingdom
Pohlaví: Muž

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
Nemáte oprávnění prohlížet přiložené soubory.
Back-end webdeveloper

Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 2971
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

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 :)
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: Intel Core i7 8700K@5GHz+EK KIT L360, ASUS Maximus X HERO, 32GB RAM@3466, MSI GTX 1080Ti Gaming, Fractal Define S, Seasonic P860, SSD 2TB celkem
Periferie: 3x AOC AG271QG (1440p 165Hz IPS), Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • stáhnutí
    od cilindr3 » 25 zář 2017 14:41 » v Hry
    11
    725
    od cilindr3
    02 říj 2017 21:21
  • EXCEL - hromada souborů - do jednoho souboru, ale každý na vlastní list
    od WARKETA » 01 pro 2017 13:49 » v Kancelářské balíky
    4
    879
    od atari
    07 pro 2017 11:51
  • Vymaz souboru, kopírování souboru ve WIN 10
    od shockwave » 24 zář 2017 10:37 » v Windows 10, 8, 7, Vista, XP…
    5
    475
    od Martab
    24 zář 2017 11:23
  • Připojení přes router jde - čistě přes kabel ne..
    od michalbar » 01 lis 2017 17:16 » v Sítě - hardware
    4
    660
    od michalbar
    01 lis 2017 18:25
  • Aplikace nereaguje
    od jozunost » 27 srp 2017 19:06 » v Windows 10, 8, 7, Vista, XP…
    0
    280
    od jozunost
    27 srp 2017 19:06

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

Kdo je online

Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 1 host