Проверка возвращаемого значения из POST с помощью Curl

#c# #php #web-services #curl

#c# #php #веб-сервисы #curl

Вопрос:

Я вызываю удаленный веб-сервис C # с помощью curl.Служба возвращает 0 или 1 в зависимости от значений, переданных ей путем проверки базы данных. Когда я использую echo $result , значение печатается правильно. Но когда я пытаюсь сравнить выходное значение, код не работает. Пожалуйста, сообщите

 $result = curl_exec($ch);
if ( $result == 0 )
{
     echo("Valid");
}
else
{
     echo("Invalid");
}
  

VarDump —> строка (103) «0»

Обновить:

 //open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//So that curl_exec returns the contents of the cURL; rather than echoing it
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
  

UPDATE2:
Код веб-сервиса C #
(возвращаемый тип — int)

   try { if (dr.HasRows) { c.Close(); return 0; } else { c.Close(); return 1; } }
  

Комментарии:

1. Что вы получите, если вы var_dump($result); ?

2. @Nick string(103) " 0"

3. @techno тогда так и должно быть intval(trim($result)) === 0 .

4. @vivek_23 Это выводит действительный каждый раз, даже если результат string(103) " 1"

5. @techno Это невозможно, учитывая мое состояние. Какие результаты вы ожидаете для 1 и 0 ? Пожалуйста, добавьте их в свой пост.

Ответ №1:

Ваша проблема в том, что вы фактически получаете возврат XML из запроса curl. Фактический текст результата

 <?xml version="1.0" encoding="utf-8"?> 
<int xmlns="http://www.example.com/">1</int>
  

Вы не видите XML, потому что вы печатаете в среде HTML, и эти теги проглатываются ( echo htmlspecialchars($result); это было бы очевидно). Вам нужно будет проанализировать XML, например, с помощью

 $xml = simplexml_load_string($result);
$result = (int)$xml;
  

и затем вы можете использовать результирующее значение.