Ошибка 401 при использовании остальных служб IBM watson в dart в качестве метода post - PullRequest
0 голосов
/ 22 сентября 2018

это первый раз, когда я попробовал опубликовать метод в dartLang.Я использовал простой API отдыха, где вы должны опубликовать строку (текст) и получите Json в ответ.Я также дал правильное имя пользователя и пароль, но ответ, который я получаю Наконец, это {code: 401, error: Unauthorized}.

Могу ли я знать, где я ошибаюсь ??Я никогда не работал с постом Rest api в DartLang.

Вот его простая документация https://www.ibm.com/watson/developercloud/personality-insights/api/v3/curl.html?curl

import 'package:untitled1/untitled1.dart' as untitled1;
import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:convert';


void main() async {

 Map hello;
 hello= await getjson();
 print(hello);

}



 Future<Map> getjson() async {
  String data;
 data= """ Insert Random long text """;



  var url = 'https://gateway.watsonplatform.net/personality- 
 insights/api/v3/profile?username=6cfcbb79-1801-4588-a1b3- 
  5c3ec101244f&password=YFM6h0rIFfzf';
     http.Response response= await http.post(url, body: data, headers: 
 {"accept" : "application/json","Content-Type": "text/plain"},);
   return json.decode(response.body);


     }

1 Ответ

0 голосов
/ 23 сентября 2018

Ссылка Watson, которую вы предоставляете, показывает пример с curl -u.curl по умолчанию Basic аутентификация, когда -u предоставляется без специального метода аутентификации (например, дайджест).Таким образом, добавление имени пользователя и пароля в URL-адрес - это не одно и то же.

http-клиент Dart поддерживает базовую аутентификацию, но для этого потребуется дополнительная передача данных на сервер, поэтому часто проще отправлять учетные данные при каждомзапрос.Следующий код возвращает вас к ошибке 401.

import 'dart:convert';

import 'package:http/http.dart' as http;

main() async {
  http.Response r = await http.post(
    'https://gateway.watsonplatform.net/personality-insights/api/v3/profile',
    body: 'some random string',
    headers: {
      'Accept': 'application/json',
      'Authorization': basicAuthorizationHeader(
        '6cfcbb79-1801-4588-a1b3-5c3ec101244f',
        'YFM6h0rIFfzf',
      )
    },
  );
  print(r.statusCode);
  print(r.body);
}

String basicAuthorizationHeader(String username, String password) {
  return 'Basic ' + base64Encode(utf8.encode('$username:$password'));
}
...