Доступ к IBM Tone Analyzer с помощью PHP и CURL

#php #curl #ibm-watson #tone-analyzer

#php #curl #ibm-watson #tone-анализатор

Вопрос:

Я хотел бы получить доступ к IBM Tone Analyzer через PHP с помощью CURL, однако я продолжаю получать ошибки авторизации, как показано ниже. Код, который я использую, показан в разделе кода.

Просматривая многочисленные страницы справки и форумы, я не нашел подходящего решения. Может кто-нибудь, пожалуйста, помогите мне, как это решить?

Заранее большое спасибо.

С наилучшими пожеланиями!

Это код, который я использую:

 <?php

//print_r($_POST);

$ch = curl_init();

$file_path = "tone.json";
$url = "https://api.eu-gb.tone-analyzer.watson.cloud.ibm.com/instances/$BLACKENED$/v3/tone?$

$header_args = array(
   'Accept: application/json',
   'Content-Type: application/json',
   'Authorization: Basic apikey:$BLACKENED


Это ошибка, которую я получаю:

 HTTP/1.1 401 Unauthorized strict-transport-security: max-age=31536000; includeSubDomains; WWW-Authenticate: Basic realm="IBM Watson Gateway(Log-in)" Content-Length: 164 Content-Type: application/json x-dp-watson-tran-id: $BLACKENED$ x-request-id: $BLACKENED$ x-global-transaction-id: $BLACKENED$ Server: watson-gateway X-EdgeConnect-MidMile-RTT: 0 X-EdgeConnect-Origin-MEX-Latency: 380 Date: Mon, 06 Dec 2021 21:46:28 GMT Connection: close {"code":401,"more_info":"https://cloud.ibm.com/docs/watson?topic=watson-authorization-error","error":"Unauthorized","trace":"$BLACKENED$"} 1 

Комментарии:

1. Мое предположение - вам нужно будет предоставить лучший, более полный набор параметров для поддержки вашего запроса curl - в частности, на основе SSL-соединений. Есть несколько, которые следует использовать всякий раз, когда вы имеете дело с конечной точкой, защищенной SSL, например CURLOPT_SSL_VERIFYPEER , CURLOPT_SSL_VERIFYHOST и CURLOPT_CAINFO где вы указываете допустимый cacert.pem uri файла. Также - что такое CURLOPT_POS ??? вы усекли отправляемые значения или это опечатка??

2. @ProfessorAbronsius это вряд ли проблема с SSL. Изначально я думал так же, пока не понял, что OP просто опубликовал весь HTTP-ответ без разрывов строк. Фактическая причина, указанная в теле ответа в конце, - ошибка аутентификации.

3. В ответе сообщается, что это ошибка аутентификации, и даже дается ссылка на соответствующие документы, включая устранение неполадок. cloud.ibm.com/docs/watson?topic=watson-authorization-error

4. @ProfessorAbronsius: Спасибо за ваш ответ. Я кое-что пропустил в своем коде, который я сейчас отредактировал. Я не получаю файл cacert.pem, но я попробовал варианты ssl. Однако это никоим образом не помогло. Я вижу, что это ошибка аутентификации, но как я могу это решить?

5. @Sammitch: Спасибо, я прочитал эту документацию, но пока это мне не помогло. У вас есть несколько советов о том, как это решить?

);

curl_setopt_array($ch,array(CURLOPT_URL => $url, CURLOPT_HEADER => $header_args, CURLOPT_UPLOAD => true, CURLOPT_POST => true, CURLOPT_INFILE => $file_path));

$response = curl_exec($ch);

echo($response);

curl_close($ch);

?>

Это ошибка, которую я получаю:


Комментарии:

1. Мое предположение — вам нужно будет предоставить лучший, более полный набор параметров для поддержки вашего запроса curl — в частности, на основе SSL-соединений. Есть несколько, которые следует использовать всякий раз, когда вы имеете дело с конечной точкой, защищенной SSL, например CURLOPT_SSL_VERIFYPEER , CURLOPT_SSL_VERIFYHOST и CURLOPT_CAINFO где вы указываете допустимый cacert.pem uri файла. Также — что такое CURLOPT_POS ??? вы усекли отправляемые значения или это опечатка??

2. @ProfessorAbronsius это вряд ли проблема с SSL. Изначально я думал так же, пока не понял, что OP просто опубликовал весь HTTP-ответ без разрывов строк. Фактическая причина, указанная в теле ответа в конце, — ошибка аутентификации.

3. В ответе сообщается, что это ошибка аутентификации, и даже дается ссылка на соответствующие документы, включая устранение неполадок. cloud.ibm.com/docs/watson?topic=watson-authorization-error

4. @ProfessorAbronsius: Спасибо за ваш ответ. Я кое-что пропустил в своем коде, который я сейчас отредактировал. Я не получаю файл cacert.pem, но я попробовал варианты ssl. Однако это никоим образом не помогло. Я вижу, что это ошибка аутентификации, но как я могу это решить?

5. @Sammitch: Спасибо, я прочитал эту документацию, но пока это мне не помогло. У вас есть несколько советов о том, как это решить?