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

我会将函数php中的Return值检索到C#WinApp Client。

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

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

我会在没有保存Pc客户端上的任何文件的情况下“在飞行中”执行此操作。

我怎样才能做到这一点?

编辑:如果有人可以用Json或XML做一个例子,我会很感激。

1
额外 编辑
意见: 3

2 答案

您需要在服务器上创建一个PHP脚本来检索您需要的数据,然后将结果作为SOAP,XML或JSON返回,然后您可以使用 WebRequest MSDN链接)。

1
额外
@FabioRocco它取决于你想要检索的数据,生成XML数据使用PHP中的东西,如 SimpleXMLElement 并从C#中读取它使用 LINQ to xml此处使用WebRequest的示例。这应该足以让你入门。
额外 作者 Nasreddine,
你可以用Json或xml制作和采样吗?谢谢
额外 作者 Fabio Rocco,

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(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; }
    }
}
0
额外
非常感谢,我将尝试一下!
额外 作者 Fabio Rocco,
有用。谢谢Sensei!
额外 作者 Fabio Rocco,