Witam,
mam program który za pomocą Curl ściąga kod strony www i zapisuje go do pliku.
Chcę zrobić tak, że jak coś się nie uda to wyskakuje wyjątek informujący o tym i zamyka program.
Testuję to na braku łączności z internetem.
gdy uruchamiam program to oczywiście nie wyskakuje żaden wyjątek, program zatrzymuje się na:
res = easy.Perform();
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SeasideResearch.LibCurlNet;
using System.Text.RegularExpressions;
using System.IO;
using System.Net;
namespace w
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
uzupelnij();
}
catch
{
MessageBox.Show("nie udalo sie");
Application.Exit();
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
string []pliki;
public int k;
public int sezon_poczatkowy;
public void pobierz_kod()
{
string []linki = new string[3];
System.DateTime czas = new DateTime();
czas = DateTime.Now;
int rok = czas.Year;
int miesiac = czas.Month;
string link = "http://www.premiership-football.co.uk/Premiership-Matches-Results-0000-0000.php";
string link2 = "http://optasportsdata.telegraph.co.uk/en/tcuk/extnavig/8/0000/620x604newresults.html";
string rocznik, rocznik2;
if (miesiac < 7)
{
int rok_a = rok - 3;
sezon_poczatkowy=rok_a;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
rok_a += j;
rocznik = rok_a.ToString();
Regex rgx = new Regex("0000");
string replacer = rocznik;
link = rgx.Replace(link, replacer,1);
linki[i] = link;
}
rok_a = rok - 2;
link="http://www.premiership-football.co.uk/Premiership-Matches-Results-0000-0000.php";
}
int rok_b = rok - 1;
rocznik2 = rok_b.ToString();
Regex rgx2 = new Regex("0000");
string replacer2 = rocznik2;
link2 = rgx2.Replace(link2, replacer2, 1);
linki[2] = link2;
}
else
{
int rok_a = rok - 2;
sezon_poczatkowy=rok_a;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
rok_a += j;
rocznik = rok_a.ToString();
Regex rgx = new Regex("0000");
string replacer = rocznik;
link = rgx.Replace(link, replacer, 1);
linki[i] = link;
}
rok_a = rok - 1;
link = "http://www.premiership-football.co.uk/Premiership-Matches-Results-0000-0000.php";
}
int rok_b = rok;
rocznik2 = rok_b.ToString();
Regex rgx2 = new Regex("0000");
string replacer2 = rocznik2;
link2 = rgx2.Replace(link2, replacer2, 1);
linki[2] = link2;
}
for(int i=0; i<3; i++)
{
sciaganie(pliki[i], linki[i]);
}
}
public void uzupelnij()
{
System.DateTime czas = new DateTime();
pliki = new string[1];
pliki[0] = "plik.txt";
czas = DateTime.Now;
int rok = czas.Year;
int miesiac = czas.Month;
string link2 = "http://optasportsdata.telegraph.co.uk/en/tcuk/extnavig/8/0000/620x604newresults.html";
string rocznik, rocznik2;
if (miesiac < 7)
{
int rok_a = rok - 1;
rocznik = rok_a.ToString();
Regex rgx = new Regex("0000");
string replacer = rocznik;
link2 = rgx.Replace(link2, replacer, 1);
}
else
{
int rok_a = rok;
rocznik = rok_a.ToString();
Regex rgx = new Regex("0000");
string replacer = rocznik;
link2 = rgx.Replace(link2, replacer, 1);
}
sciaganie(pliki[0], link2);
textBox1.Text = "fsadf".ToString();
}
public string m;
private StreamWriter zapis;
public void sciaganie(string plik, string link)
{
k = 0;
zapis = new StreamWriter(plik);
Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);
CURLcode res = CURLcode.CURLE_OK;
Easy easy = new Easy();
Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData);
easy.SetOpt(CURLoption.CURLOPT_URL, link);
easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
res = easy.Perform();
if (res != CURLcode.CURLE_OK)
{
throw new Exception("Post operation failed");
} textBox1.Text = "fsadf".ToString();
easy.Cleanup();
Curl.GlobalCleanup();
zapis.Close();
}
public Int32 OnWriteData(Byte[] buf, Int32 size, Int32 nmemb, Object extraData)
{
zapis.Write(System.Text.Encoding.UTF8.GetString(buf));
return size * nmemb;
}
}
}