Как отправить результат функции PHP клиенту ac #? - PullRequest
1 голос
/ 12 ноября 2011

Я бы получил значение Return из функции php в клиент C # WinApp.

У меня есть некоторые функции на странице php.Эти функции используют метод Get и обрабатывают некоторые данные, полученные от клиента C # Winapp.

Поэтому страницы php после обработки данных возвращают значение.Теперь я получил бы это значение от клиента C #.

Я бы сделал это «на лету», не сохраняя никаких файлов на ПК-клиенте.

как мне это сделать?

Изменить: Если кто-то может сделать экзамен с Json или XML, я буду признателен.

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Вам необходимо создать скрипт PHP на сервере, который извлекает нужные вам данные, затем возвращает результаты в виде SOAP, XML или JSON, затем вы можете запросить эту страницу из вашего приложения C #, используя WebRequest ( ссылка MSDN ).

0 голосов
/ 12 ноября 2011

Простой пример с выводом JSON:

Код PHP:

<?php 
#header('content-type:application/json');
if(array_key_exists("foo", $_POST) && !empty($_POST["foo"])) {
   $data = array('foo' => 'baa', 'x' => 'y', 'sucess' => 'true', 'error' => 'null');
}
else {
    $data = array('error' => 'foo is empty', 'sucess' => 'false');
}

    die(json_encode($data));
?>

C #. NET код:

using System;
using System.Text;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            string response = DoRequest();
            JavaScriptSerializer ser = new JavaScriptSerializer();
            View json = ser.Deserialize<View>(response);
            if (json.sucess)
            {
                // do something.. 
            }
            else
            {
                Console.WriteLine("Erro:{0}", json.error);
            }

        }

        static string DoRequest()
        {
            string domain = "..."; // your remote server 
            string post = "foo=baa";
            byte[] data = Encoding.ASCII.GetBytes(post);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(domain);
            request.Method = "POST";
            request.Referer = "desktop C# Application";
            request.ContentLength = data.Length;
            request.ContentType = "application/x-www-form-urlencoded";

            Stream stream = request.GetRequestStream();
            stream.Write(data, 0, data.Length);

            HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            char[] buffer = new char[256];
            int count;
            StringBuilder buf = new StringBuilder();
            while ((count = sr.Read(buffer, 0, 256)) > 0)
            {
                buf.Append(buffer, 0, count);
            }

            response.Close();
            stream.Close();
            sr.Close();

            return buf.ToString();

        }
    }

    public class View
    {
        public string foo { get; set; }
        public string x { get; set; }
        public bool sucess { get; set; }
        public string error { get; set; }
    }
}
...