[c#]Pobieranie danych ze strony PHP


(bober370) #1

Witam mam taki mały problem.

Chciałem zrobić sobie stronę a raczej kod i stronę który by pobierał mi dane z owej strony.

Chciałem to zrobić takim kodem:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://cps.cityhost.pl/mta/webreq.php");

            WebResponse resp = req.GetResponse();

            StreamReader reader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);

            string result = reader.ReadToEnd();

            errorline.Text = result.ToString();

            reader.Dispose();

lecz coś zbytnio nie działa Nie za bardzo jeszcze umiem c# i dlatego prosił bym o pomoc :smiley: najlepiej by było również pokazać mi przykładową stronę (PHP) pod ten kod oraz 2 problem: Jak zmienić wartość w jakimś labelu z poziomu innego form inny form wywołuje:

Form set = new Form3();

            set.Show();

ale chciałbym od razu zmienić jakąś wartość w nim lub wywołać funkcje z tej formy. Czy istnieje taka możliwość?

Z góry dziękuje za pomoc


(Tomek Matz) #2

To nie ma znaczenia, czy dane pobierasz ze strony php, html, asp, aspx, jsp, czy jeszcze innej i tak pobierzesz kod (X)HTML.

AD 1) Zmień na errorline.Text = result;

AD 2) Przygotuj sobie przeciążony konstruktor

public Form3(string s)

{ label.Text = s; }

i wówczas wywołuj Form set = new Form3("jakis tekst");


(bober370) #3

no dobrze 1 działa tylko takie jedno dopytanie: Jak to zrobić tak by zwrócić z tego tablice?

a co do tego 2. Lepiej by było jak byś było wykonać funkcje z tamtej formy


(Tomek Matz) #4

AD 1) string[] resultArray = result.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

AD 2) Jeśli chcesz wywoływać funkcję to ta funkcja musi być oznaczona jako public, a tworząc obiekt klasy Form3 musisz to robić następująco:

Form3 set = new Form3();

set.TwojaMetoda("jakis tekst");

set.Show();


(bober370) #5

2 działa bez zarzutów lecz 1 tak ne zabardzo.

po użyciu np errorline.Text = resultArray[0];

zwracany text to: Array. Czyli on nie odczytuje prawdziwej wartości lub gdzieś jest mój błąd


(Tomek Matz) #6

No a jaka jest wg Ciebie ta prawdziwa wartość?

Trochę uporządkowałem ten kod ...

WebResponse response = null;

Stream responseStream = null;

StreamReader reader = null;


try

{

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("www.dobreprogramy.pl");

    response = request.GetResponse();


    responseStream = response.GetResponseStream();

    reader = new StreamReader(responseStream, Encoding.UTF8);


    string html = reader.ReadToEnd();

    string[] htmlArray = null;

    if (!string.IsNullOrEmpty(html))

        htmlArray = html.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);


    if (htmlArray != null && htmlArray.Length > 0)

    {

        //TODO: code

    }

}

catch (Exception ex)

{

    //TODO: handle exception

}

finally

{

    if (reader != null)

        reader.Close();

    if (responseStream != null)

        responseStream.Close();

    if (response != null)

        response.Close();

}