#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;
и затем вы можете использовать результирующее значение.