C#使用Visual Studio 2013与PHP交互,并制作Windows 8.1通用应用程序


C# interacting with PHP using Visual Studio 2013 and making Windows 8.1 Universal App

好的。所以这个问题可能有点愚蠢,但由于我搜索了又搜索,还没有找到一个有效的解决方案,我想我可以在这里问。

我已经建立了一个简单的PHP页面,它从url myusername和mypassword中获得2个参数。然后根据给定的用户名和密码从数据库中获取3个int值。

(通过键入带有参数的url来测试它,PHP脚本本身也能工作。甚至让它在页面上回显3个整数来确保(

现在来看有问题的部分。我正在使用Visual Studio 2013,并制作一个适用于Windows 8.1的通用应用程序。而且我似乎无法让httpClient从那里获取任何数据。通过浏览论坛,我一直找不到任何有效的东西。也不可能测试所有,因为大多数都使用GetResponse((,这在VS2013中不起作用。由于我对C#编码还很陌生,所以在我所做的几十个测试中,它可能很简单,只是出现了一个小错误。

制作了一个包含2个文本字段的登录屏幕。我可以以"www.something.com/something/somephp?myusername=UserNameGiven&mypassword=PasswordGiven"的形式构建url

如果有人能给出一个简单的解决方案,告诉我如何从地址打开的页面中获得结果(只通过echo显示3个整数…如果C#代码不需要这些整数,也可以删除它们。如果要求不太高,字符串格式可能是理想的…

Ok为您给SnyderCode的代码制作了一个新的GetScores异步方法。在登录按钮上扔那个Task至少需要我目前所不知道的编码。

静态结果。"文本"字段保持默认状态,不显示任何更改。

将LoginButton更改回async而不执行任务。

我的代码从c#的状态是atm是

private async void LoginButton_Click(object sender, RoutedEventArgs e)
{
   string UserName, Password;
   UserName = UserNameFeedField.Text.ToString();
   Password = PasswordFeedField.Text.ToString();
   string url = "something.com/something/GetScores.php?myusername=" + UserName + "&mypassword=" + Password;
   URL.Text = url;
   // GetScores(url);
   using (Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient())
   {
      string contentOFPage = await client.GetStringAsync(new Uri(url));
      Results.Text = contentOFPage;
   }
}

如果这里重要的是PHP代码部分

<?php
$host="db_host"; // Host name 
$username="db_user"; // Mysql username 
$password="db_pswd"; // Mysql password 
$db_name="db_name"; // Database name 
$tbl_name="db_table"; // Table name 
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
// username and password sent from form 
$myusername=$_GET["myusername"]; 
$mypassword=$_GET["mypassword"]; 
// To protect MySQL injection (more detail about MySQL injection )
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT field1 as LowB, field2 as LongB, field3 as Bs FROM $tbl_name WHERE UserID='$myusername' and UserPSWD='$mypassword'";
$result=mysql_query($sql);
// this part only shows the variables gotten from the query and echoes those on the page
// was only made to test that the PHP works.
while ($row = mysql_fetch_assoc($result)) {
    echo ($row["LowB"] . " " . $row["LongB"] . " " . $row["Bs"]);
}
?>

首先,异步方法总是需要返回一个任务。其余:

private async void LoginButton_Click(object sender, RoutedEventArgs e)
{
    string UserName = UserNameFeedField.Text.ToString();
    string Password = PasswordFeedField.Text.ToString();
    string url = "www.something.com/something/some.php?myusername=" + UserName + "&mypassword=" + Password;
    using (Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient())
    {
        string contentOfPage = await client.GetStringAsync(new Uri(url));
        //Do something with the contentOfPage
    }
}