php
  • web-services
  • curl
  • 2013-06-17 5 views 0 likes 
    0

    У меня есть следующий код для того, чтобы вызвать веб-службы из PHP, используя завиток:PHP CURL Web Service Call-

    <?php 
    echo "Init<br />"; 
    $url = 'http://server-ip/applications/time2gate.aspx?x=1182&y=365&map=1002&gate=B3&mode=time2gate&session=5fdf288d-01b0-414a-ba2a-58d3f624e453'; 
    
    $ch = curl_init($url); 
    echo "1"; 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $resp = curl_exec($ch); 
    
    $status_code = array(); 
    preg_match('/\d\d\d/', $resp, $status_code); 
    
    switch($status_code[0]) { 
         case 200: 
          echo "Success<br />"; 
          break; 
        case 503: 
          die('Your call to Web Service failed and returned an HTTP 503.'); 
          break; 
        case 403: 
          die('Your call to Web Service failed and returned an HTTP status of 403.'); 
          break; 
        case 400: 
          die('Your call to Web Services failed and returned an HTTP status of 400.'); 
          break; 
        default: 
          die('Your call to Web Services returned an unexpected HTTP status of:' . $status_code[0]); 
    } 
    
    if(curl_errno($ch)) 
    { 
        echo 'error' . curl_error($ch); 
    } 
    
    curl_close($ch); 
    
    ?> 
    

    Проблема заключается в том, что я получаю коды ответа HTTP, как 163, 815, 329 .. . Почему это происходит? Что означают эти коды? Я проверил журнал ошибок Apache, и я не видел никаких ошибок в моем коде. Кроме того, я проверил звонок на предоставленный url, и он работает с надстройкой плаката Mozilla.

    Любые идеи? Я работаю с PHP 5, на Ubuntu 12.

    Спасибо, Ник

    +0

    Вы уверены, что это коды ответа HTTP? http://en.wikipedia.org/wiki/List_of_HTTP_status_codes Они не выглядят знакомыми – ajtrichards

    +0

    Ну, я следовал инструкциям из http://developer.yahoo.com/php/howto-reqRestPhp.html. Есть ли другой способ проверить код ответа HTTP? –

    +1

    Возможно, но без фактического вывода вызова службы лучший ответ, который вы получите, - это дикая догадка. – Crontab

    ответ

    1

    Когда мне нужно делать вызовы API, которые я использую простую библиотеку доступных на GitHub: https://github.com/rmccue/Requests

    Я положить пример ниже, который использует эту библиотеку, и распечатает полный ответ API.

    <?php 
    
    require_once('library/Requests.php'); 
    
    $url = 'http://server-ip/applications/time2gate.aspx?x=1182&y=365&map=1002&gate=B3&mode=time2gate&session=5fdf288d-01b0-414a-ba2a-58d3f624e453'; 
    
    // Next, make sure Requests can load internal classes 
    Requests::register_autoloader(); 
    
    // Now let's make a request! 
    $request = Requests::get($url, array('Accept' => 'application/json')); 
    
    echo '<pre>'; 
        print_r($request); 
    echo '</pre>'; 
    
    +0

    Благодарим за отзыв, но я хочу придерживаться чистых вызовов веб-сервисов php-curl. –

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