Попытка сделать вызов API для получения токена

Ниже приведен код, который я пытался сделать для API-вызова токена. Похоже, что x-www-form-urlencoded вызывает несанкционированный доступ 401 при преобразовании в тело. Что является стандартным процессом преобразования тела в x-www-form-urlencoded.

Add-Type @"
    using System;
    using System.Net;
    using System.Net.Security;
    using System.Security.Cryptography.X509Certificates;
    public class ServerCertificateValidationCallback
    {
        public static void Ignore()
        {
            ServicePointManager.ServerCertificateValidationCallback += 
                delegate
                (
                    Object obj, 
                    X509Certificate certificate, 
                    X509Chain chain, 
                    SslPolicyErrors errors
                )
                {
                    return true;
                };
        }
    }
"@
[ServerCertificateValidationCallback]::Ignore();

$header = @{
 "content-Type"="application/x-www-form-urlencoded"
 "accept"="application/json"
}

$APICURL= "myurl" 

$json = @{ "grant_type"="access"
         "client_id" = "xyz"
         "client_secret" = "abc"
        "scope" = "one"}


         $body = $json | ConvertTo-Json
          $response =Invoke-Restmethod -Uri $APICURL -Method Post -Headers $header -Body $body

person patrick    schedule 24.05.2019    source источник
comment
Content-Type по умолчанию в POST — это application/x-www-form-urlencoded. Я бы убрал это из шапки.   -  person AdminOfThings    schedule 24.05.2019


Ответы (2)


Вы установили для Content-Type значение x-www-form-urlencoded, но вы предоставляете JSON. JSON довольно распространен как тип тела, поэтому я бы сначала попытался изменить ваш Content-Type на application/json, если только вы не уверены, что спецификация требует x-www-form-urlencoded.

Если последнее, вы можете проверить этот вопрос: Как отправить запрос с помощью Invoke-WebRequest

person William    schedule 24.05.2019
comment
Вместо JSON как поставить x-www-form-urlencoded? - person patrick; 24.05.2019
comment
Есть ли способ преобразовать тело JSON в x-www-form-urlencoded? - person patrick; 24.05.2019
comment
Если предоставленная мной ссылка не работает, вы можете использовать ее: geekeefy.wordpress.com/2017/05/26/ - person William; 24.05.2019

Измените тип контента на application/json.

person fahim152    schedule 25.05.2019