簡體   English   中英

如何使用 php curl 將數據正確發布到 IBM api

[英]how to properly post data to an IBM api using php curl

我正在嘗試使用以下 IBM curl 請求數據來實現 ibm watson 語言翻譯器

url -X POST -u "apikey:{apikey}" --header "Content-Type: application/json" --data "{\"text\": [\"Hello, world! \", \"How are you?\"], \"model_id\":\"en-es\"}" "{url}/v3/translate?version=2018-05-01"

我已經編寫了兩個代碼試圖讓它工作,但是當我運行下面的兩個代碼時。 它顯示錯誤

{“代碼”:401,“錯誤”:“未經授權”}{“代碼”:401,“錯誤”:“未經授權”}

請問我該怎么做才能讓它工作。 謝謝

第一次代碼嘗試

<?php

$apikey ="my-api-key-goes-here";

$url = "https://api.eu-gb.language-translator.watson.cloud.ibm.com/instances/48bed10c-ce07-4a77-adec-014e0729de40/v3/translate?version=2018-05-01";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
    'apikey'=>$apikey

]));

//$params_post ="{\"text\": [\"Hello, world! \", \"How are you?\"], \"model_id\":\"en-es\"}";
$params_post ='{"text":["Hello"],"model_id":"en-es"}';
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));  

curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($ch,CURLOPT_POSTFIELDS, $params_post);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
 echo $response = curl_exec($ch);

curl_close($ch);

print_r($response);


?>

第二次代碼嘗試

<?php

$apikey ="my-api-key-goes-here";

//$params_post ="{\"text\": [\"Hello, world! \", \"How are you?\"], \"model_id\":\"en-es\"}";
$params_post ='{"text":["Hello"],"model_id":"en-es"}';
$uname ="apikey";
$pass =$apikey;

/*
$header = array(
   'Content-Type: application/json',
   "Authorization: apikey:$apikey"
);
*/

$header = array(
    'Content-Type:application/json',
    'Authorization: Basic '.$apikey
);


// Set options for REST call via curl

$endpointurl ="https://api.eu-gb.language-translator.watson.cloud.ibm.com/instances/48bed10c-ce07-4a77-adec-014e0729de40/v3/translate?version=2018-05-01";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $endpointurl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERPWD, "$uname:$pass"); 
//curl_setopt($ch, CURLOPT_USERPWD, $uname . ":" . $pass);

//curl_setopt($curl, CURLOPT_USERPWD, 'apikey:' . $apikey);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);


curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS, $params_post);

echo $result = curl_exec($curl);


print_r($result);



?>

我知道這個話題是什么老話題,但這對我有幫助。

$url = "{URL here}/v3/translate? version = 2018-05-01";
$user = "apikey";
$pass = "{API key here}";
$options = array (
    CURLOPT_RETURNTRANSFER =>true,
    CURLOPT_FOLLOWLOCATION =>true,
    CURLOPT_AUTOREFERER =>true,
);
$data = [
  'text' =>[
    'Hello, world!',
    'How are you?'
  ],
  'model_id' =>'en-es'
];
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_USERPWD, $user. ":". $pass);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json'));
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt ($ch, CURLOPT_VERBOSE, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode ($data));
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt_array ($ch, $options);
$result = curl_exec ($ch);
curl_close ($ch);

在這里我找到了這個https://www.tutorialfor.com/questions-111457.htm

我希望它對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM