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