Использование переменной HttpWebResponse C# HttpWebRequest из веб-службы в инструкции if

У меня есть приложение C# Windows Form, отправляющее переменные в веб-службу PHP.

Протестировано отдельно:

1) Веб-сервис PHP работает и возвращает результат.

2) Приложение C# Windows Form для отображения переменных в URL-адресе с помощью WebRequest, переменные отображаются правильно в URL-адресе.

3) Когда я отображаю возвращаемую переменную на C# с помощью MessageBox.Show, отображается правильная переменная (Разрешить)

Использование переменной HttpWebResponse C# HttpWebRequest из веб-службы в инструкции if

Но когда я использую возвращаемую переменную в операторе if, он не выполняет код внутри оператора if.

Использование переменной HttpWebResponse C# HttpWebRequest из веб-службы в инструкции if

Вот мой веб-сервис PHP:

<?php
// Database Structure 
require_once('connect.php');

//Get password from the database for the user

$stmtus = $conn->prepare("SELECT password from `Users` where `email` = :Username");
$stmtus->bindParam(':Username', $username);
$username= $_GET['username'];;
$stmtus -> execute();
$password = $stmtus->fetch();

$un = $_GET['username'];
$pw = $_GET['password'];
$ust = $_GET['Token'];

if (password_verify($pw, $password[0])){
$stmt = $conn->prepare("SELECT 
COUNT(Token) AS cnt FROM `SoftwareToken` 
LEFT JOIN User ON iduser = SoftwareToken.Consultant 
WHERE Token = :Token 
AND username = :Username");
$stmt->bindValue(':Username', $un);
$stmt->bindValue(':Token', $ust);
$stmt->execute();
$result= array();
while ($result = $stmt->fetch(PDO::FETCH_ASSOC)){
$cnt = $result['cnt'];
if ($cnt == 1){
    echo "Allow";
}else{
    echo "NO";
} 
?>

Вот мой код приложения Windows Form на C#:

        private void btnlogin_Click(object sender, EventArgs e)
    {
        if (String.IsNullOrEmpty(txtusername.Text))
        {
            MessageBox.Show("Please insert username");
        }

        if (String.IsNullOrEmpty(txtpassword.Text))
        {
            MessageBox.Show("Please insert password");
        }
        var Token = "PYPYY 46355 R8T2Q2";
        var username = txtusername.Text;
        var password = txtpassword.Text;
        var url = "https://mydomain.com.au/LoginVerification.php?";
        var var = "username = " + username + "&password = " + password + "&Token = " + Token;
        var URL = url + var;
        // MessageBox.Show(URL);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.  
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.  
        string responseFromServer = reader.ReadToEnd();
        //MessageBox.Show(responseFromServer);
        // Display the content.  

        if (responseFromServer == "Allow")
        {
            //Form1 identykidzform = new Form1();
            //identykidzform.Show();
            MessageBox.Show(responseFromServer);
        }
        else if (responseFromServer == "NO")
        {
            MessageBox.Show("No");
            //Application.Exit();
        }
        else
        {
            MessageBox.Show("Test failed");
            //Application.Exit();
        }
    }

Что такое responseFromServer, когда он выходит из строя? И вам не хватает двух закрывающих скобок в файле PHP.

Felippe Duarte 07.12.2018 16:16

Вы можете попробовать лучше изучить переменную responseFromServer. Если это не удается, это потому, что ответ ни «Разрешить», ни «НЕТ»

Xxx Xxx 07.12.2018 16:20

Вы используете службу с конечной точкой HTTPS. Убедитесь, что вы получили правильный ответ без ошибок.

emert117 07.12.2018 16:22
"он не выполняет код внутри оператора if" - Тогда условие if - false. Отлаживайте и наблюдайте за точными значениями ваших переменных. Они такие, какими вы их ожидаете? Есть ли в строке ошибочные пробелы или что-то еще, что могло бы привести к тому, что это не будет точно, с чем вы его сравниваете?
David 07.12.2018 16:22

Я не знаю php, но может ли $result['cnt'] выдать исключение?

Nilesh 07.12.2018 16:36

@Nilesh, только если в ассоциативном массиве $ result нет индекса с именем "cnt". Но есть должен, потому что это псевдоним столбца, используемый в запросе SQL.

ADyson 08.12.2018 10:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
162
0

Другие вопросы по теме