Powershell Invoke-веб-запрос против Php curl - PullRequest
0 голосов
/ 20 сентября 2018

У меня проблема с репликацией чего-то в php, который отлично работает в powershell.

Мой скрипт PowerShell:

$url = 'https://private.service-now.com/api/now/table/change_request?sysparm_query=u_requesting_group.name=ibgportal&sysparm_display_value=true&sysparm_exclude_reference_link=true'

function generateSNOWHeaders {

#Pull the SNOW password from encrypted string in the SecureStrings.txt file and use it to create the authentication credentials.
$username = "private"
$password = ConvertTo-SecureString -String "private" -AsPlainText -Force

$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $password
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes( $cred.UserName + ":" + $cred.GetNetworkCredential().password ) )
$basicAuthValue = "Basic $encodedCreds"

$returnHeaders = @{ "Authorization" = $basicAuthValue; "Accept-Language" = 'application/json' }
return $returnHeaders
}

$headers = generateSNOWHeaders


$returnedResult = Invoke-RestMethod -Method Get -Uri $url -Headers $headers -Body ( ConvertTo-Json $body ) -ContentType "application/json"


write-host $returnedResult.Result

Мой вызов PHP-скрипта:

$user = 'private';
$pass = 'private';
$url = "https://private.service-now.com/api/now/table/change_request?sysparm_query=u_requesting_group.name=ibgportal&sysparm_display_value=true&sysparm_exclude_reference_link=true";
$userPass = base64_encode($user.':'.$pass);

$curl = curl_init();
curl_setopt_array($curl, array(
  //CURLOPT_CAINFO => dirname(__FILE__)."/cacert.pem",
  CURLOPT_URL => "$url",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 300,
  //CURLOPT_HTTPAUTH => CURLAUTH_BasicAuth,
  //CURLOPT_USERPWD, "$userPass",
  CURLOPT_VERBOSE => true,
  //CURLOPT_PORT => 80,
  //CURLOPT_COOKIEJAR => dirname(__FILE__) . '/cookie.txt',
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Basic $userPass",
    "Accept-Language: application/json",
    //"Content-Type: application/json",
    //"Host: service-now.com",
    ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
} 

Пожалуйста, игнорируйте комментарии.Я запускаю оба скрипта с одного и того же сервера, и скрипт php отвечает с ошибкой тайм-аута.Почему работает PowerShell, а не PHP?

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