将字符串从C#Windows窗体应用程序传递到php网页

将字符串从C#Windows窗体应用程序传递到php网页,c#,php,C#,Php,如何将一些数据从C#net传递到网页?我目前正在使用这个: ProcessStartInfo p1 = new ProcessStartInfo("http://www.example.com","key=123"); Process.Start(p1); 但是如何从PHP访问它呢?我试过: <?php echo($_GET['key']); ?> 但是它不打印任何内容。尝试将其与url本身一起传递 ProcessStartInfo p1 = new ProcessStar

如何将一些数据从C#net传递到网页?我目前正在使用这个:

ProcessStartInfo p1 = new ProcessStartInfo("http://www.example.com","key=123");
Process.Start(p1);
但是如何从PHP访问它呢?我试过:

<?php echo($_GET['key']); ?> 


但是它不打印任何内容。

尝试将其与url本身一起传递

ProcessStartInfo p1 = new ProcessStartInfo("http://timepass.comule.com?key=123","");  
Process.Start(p1);

您应该将键参数作为查询字符串:

ProcessStartInfo p1 = new ProcessStartInfo("http://timepass.comule.com?key=123");

在我的应用程序中,我使用了不同的方法,即使用webClient

WebClient client1 = new WebClient();
string path = "dtscompleted.php";//your php path
NameValueCollection formData = new NameValueCollection();
byte[] responseBytes2=null;
formData.Add("key", "123");
try
 {
      responseBytes2 = client1.UploadValues(path, "POST", formData);
 }
catch (WebException web)
 {
      //MessageBox.Show("Check network connection.\n"+web.Message);
 }

我建议使用HttpWebRequestClass

这样,您还可以将数据发布到页面、添加身份验证参数、cookies等,以防需要

我不确定这在您的特定设置中是否重要,通过查询字符串传递数据是不安全的。但如果安全性也是一个问题,我会通过SSL连接发布数据

更新:

因此,如果您像这样将数据发布到php页面:

string dataToSend = "data=" + HttpUtility.UrlEncode("this is your data string");
var dataBytes = System.Text.Encoding.UTF8.GetBytes(dataToSend);

HttpWebRequest req = (HttpWebRequest) WebRequest.Create("http://localhost/yourpage.php");
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = dataBytes.Length;
req.Method = "POST";

using (var stream = req.GetRequestStream())
{
    stream.Write(dataBytes, 0, dataBytes.Length);
}

// -- execute request and get response
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
if (resp.StatusCode == HttpStatusCode.OK)
    Console.WriteLine("Hooray!");
您可以在php页面中使用以下代码检索它:

echo $_POST["data"]) 
更新2:

好的,ProcessStartInfo/Process.Start()实际上启动了一个进程——在本例中,我认为它将启动您的浏览器。第二个参数是命令行参数。这些信息由程序使用,以便它们知道启动时如何操作(隐藏、打开默认文档等)。无论如何,它与查询字符串不相关。如果您喜欢使用Process.Start(),请尝试以下操作:

ProcessStartInfo p1 = new ProcessStartInfo("iexplore","http://google.com?q=test");
Process.Start(p1); 
如果你运行它,它将打开internet explorer,并在搜索框上打开google with test。如果这是您的页面,您可以通过拨打以下电话访问“q”:

echo $_GET["q"]) 

提供了什么?如果URL变量不如123干净(例如用户文本输入),请不要忘记转义它。我实际上是在发送产品密钥。我不想将产品密钥作为查询字符串传递,甚至不是加密格式。我不确定您是否有一种方法可以在不使用GET或POST参数的情况下通过web url将数据传递到web服务器。相反,您可以尝试通过SSL将Web服务与WSDL文件一起使用。或者,您可以将此特定url设置为SSL。但它仍然以加密格式传递url。这意味着加密密钥将显示在url中,如果我使用您所说的…?是的,但SSL的值是不可逆的。如果你不能实现SSL,你可以实现一些加密算法并在另一端解密。我不想使用querystring,因为它会在网页打开时显示在url中,我可能使用加密格式,但还不能。那么你最好使用post数据