2014-08-28 2 views
0

У меня есть PHP-файл на моем локальном сервере, который выглядит следующим образом: (Переменные базы данных находятся в config.php и правильно!)HTTP Post запрос с Windows Phone Webclient C#

<?php 

require_once "config.php"; 

try 
{ 
    $con = new PDO("mysql:host=".$db_host.";dbname=".$db_name,$db_user,$db_password); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch (PDOException $e) 
{ 
    echo "Error: ".$e->getMessage(); 
    exit(); 
} 

if (empty($_POST["number"]) || !isset($_POST["number"])) 
{ 
    echo "Error: no number!"; 
    exit(); 
} 
else if (empty($_POST["password"]) || !isset($_POST["password"])) 
{ 
    echo "Error: no password!"; 
    exit(); 
} 
else 
{ 
    $number = $_POST["number"]; 
    $password = md5($_POST["password"]); 
    $salt = sha1($_POST["password"]); 
} 

if (!empty($_POST["login"])) 
{ 
    $sql = $con->prepare("SELECT COUNT(`ID`) FROM ".$db_table_login_students." WHERE `number` = ? AND `password` = ? AND `salt` = ? AND user_deleted=0"); 
    $sql->bindParam(1, $number); 
    $sql->bindParam(2, $password); 
    $sql->bindParam(3, $salt); 
    $sql->execute(); 
    if($sql->fetchColumn() > 0) 
    { 
     $login = array('Login' => 'Yes'); 
     echo json_encode($login); 
     $_sql = $con->prepare("UPDATE ".$db_table_login_students." SET last_login=NOW() WHERE number = ?"); 
     $_sql->bindParam(1, $matrikelnummer); 
     $_sql->execute(); 
     exit(); 
    } 
    else 
    { 
     $login = array('Login' => 'No'); 
     echo json_encode($login); 
     exit(); 
    } 
} 

?> 

А теперь я хочу сделать HTTP Post запрос с Windows Phone в C# и теперь выглядит так:

void PostJsonRequestWebClient() 
    { 
     WebClient webclient = new WebClient(); 
     Uri uristring = null; 
     uristring = new Uri("http://localhost/login.php?"); 
     webclient.Headers["ContentType"] = "application/x-www-form-urlencoded"; 
     string WebUrlRegistration = ""; 
     string JsonStringParams = "login=yes&number=4340490&password=test"; 
     webclient.UploadStringCompleted += wc_UploadStringCompleted; 
     webclient.UploadStringAsync(uristring, "POST", JsonStringParams); 
    } 
    private void wc_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) 
    { 
     try 
     { 

      if (e.Result != null) 
      { 
       string response = e.Result.ToString(); 
       textblock1.Text = response; 
      } 
     } 
     catch 
     { 
     } 
    } 

Логина данные с номером и паролем правильны в моей базе данных. Когда я делаю запрос Get вместо Post, я стал ответом из сценария php «{Login: Yes}». Но когда я делаю Post-запрос, как выше, я стал «Error: no number!». Поэтому я думаю, что строка запроса Post является ложной, но я ничего не нахожу. Кто-нибудь может мне помочь?

ответ

0

Возможно, HTTP-заголовок должен быть Content-Type вместо ContentType.

Смежные вопросы