如何将PHP函数的结果发送到c#Client?

时间:2011-11-12 17:00:28

标签: c# php mysql return

我会将函数php的Return值检索到C#WinApp客户端。

我在php页面中有一些功能。 这些函数使用Get Method并详细说明从C#Winapp客户端收集的一些数据。

所以精心设计数据后的php页面返回一个值。现在我将从C#客户端获得此值。

如果不保存Pc客户端上的任何文件,我会“在飞行中”执行此操作。

我该怎么做?

编辑:如果有人可以使用Json或XML进行示例,我会很感激。

2 个答案:

答案 0 :(得分:1)

您需要在服务器上创建一个PHP脚本来检索您需要的数据,然后将结果作为SOAP,XML或JSON返回,然后您可以使用WebRequest({{3})从您的C#应用​​程序请求该页面})。

答案 1 :(得分:0)

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