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: 1624
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: 1624
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: 1624
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: 3074
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 RTX 2080Ti Trio, 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: 1624
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: 3074
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 RTX 2080Ti Trio, 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
  • Přesu aplikace bez instalačního souboru
    od Petrfoo » 28 zář 2018 12:51 » v Mobily, tablety a jiná přenosná zařízení
    3
    518
    od zeus
    29 zář 2018 09:54
  • Excel - VBA - Makro - odeslání dat ze souboru A do souboru B
    od Pavel Křivánek » 26 lis 2018 15:04 » v Kancelářské balíky
    3
    426
    od MePExG
    28 lis 2018 21:30
  • Padá Win10
    od Gary15 » 18 bře 2018 16:52 » v BSOD (Blue Screen Of Death)
    2
    415
    od Pic
    18 bře 2018 17:06
  • Padá do BSOD
    od junfan » 02 kvě 2018 15:28 » v BSOD (Blue Screen Of Death)
    4
    520
    od pulsik
    03 kvě 2018 12:57
  • AoE 3 padá
    od xkorecx » 07 led 2018 18:36 » v Hry
    6
    463
    od xkorecx
    08 led 2018 18:06

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

Kdo je online

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