PHP Curl и OData - PullRequest
       1

PHP Curl и OData

1 голос
/ 21 января 2020

Я пытаюсь сделать запрос к веб-сервису OData. Я попытался сделать это в Python, и он работал нормально. Но когда я попытался сделать это в PHP, я получил следующую ошибку:

Ошибка скручивания: не удалось подключиться к порту 443 fse-na-int01.cloud.clicksoftware.com: соединение отклонено

Это то, что я пробовал до сих пор в PHP:

function getTaskStatus($taskKey){
    $curl = curl_init();
    $url = "https://fse-na-int01.cloud.clicksoftware.com/so/api/objects/Task/?\$select=DisplayStatus&\$filter= Key eq ".$taskKey;


    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);
    curl_setopt($curl, CURLOPT_HTTPHEADER, [
        'Accept: application/json',
        'Content-Type: application/json'
    ]);
    curl_setopt($curl, CURLOPT_USERPWD, "user@domain:password");
    $result = curl_exec($curl);
    if(curl_errno($curl)){
        echo 'Curl error: ' . curl_error($curl);
    }
    curl_close($curl);
    return $result[0]["DisplayStatus"]["@DisplayString"];

}

И это мой Python код (который отлично работает):

def getTaskStatus(taskKey):
        top_level_url = "https://fse-na-int01.cloud.clicksoftware.com/"
        usuarioClick = 'user@domain'
        passwordClick = 'password'
        try: 
            password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
            password_mgr.add_password(None, top_level_url, usuarioClick, passwordClick)
            handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
        # create "opener" (OpenerDirector instance)
            opener = urllib.request.build_opener(handler)
        # use the opener to fetch a URL
            a_url = "https://fse-na-int01.cloud.clicksoftware.com/so/api/objects/Task/?$select=DisplayStatus&$filter=%20Key%20eq%20"+str(taskKey)
            opener.open(a_url)
            urllib.request.install_opener(opener)
            response = urllib.request.urlopen(a_url)
            resultadoJson = json.loads(response.read())

        except urllib.error.HTTPError:
            return "AuthError"
        except urllib.error.URLError:
            return "ConnError"
        except:
            return "UnkownError"
        try:
            return resultadoJson[0]["DisplayStatus"]["@DisplayString"]
        except:
            return False

Есть идеи, почему код PHP не работает?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...