Код 401 указывает на проблему с авторизацией вашего соединения.В частности, ваша проблема вызвана тем, что вы используете BasicAuth с HTTP-соединением.
Документация WooCommerce REST API указывает, что BasicAuth поддерживается только для HTTPS-соединений, а HTTP-соединения должны использовать OAuth 1.0a«одноногая» аутентификация, чтобы «гарантировать», что ваши учетные данные не перехвачены злоумышленником.Важно отметить, что даже с OAuth 1.0a HTTP-соединение никогда не будет по-настоящему безопасным, и настоятельно рекомендуется переключить ваше приложение на безопасное HTTPS-соединение.
Между тем, чтобы ваш код работал,вам придется реализовать метод аутентификации OAuth 1.0a для вашего приложения Android.
Здесь вы можете найти полный набор инструкций и полный пример проекта реализации OAuth 1.0a для Android . Страница GitHub содержит превосходное руководство с пошаговыми инструкциями по использованию библиотеки, указанной выше.Просто убедитесь, что при использовании предоставленного кода вы должны учитывать тот факт, что вы используете OKHttp.К счастью, автор очень хорошо прокомментировал код в инструкциях и запомнил изменения, которые нужно внести при использовании чего-то вроде OkHttp.
Вы можете использовать Retrofit и просто написать Interceptor, который принимаетЗабота о «мимолетной» части, как описано в документации здесь.
Вы также можете следовать пошаговому руководству, описанному в Документации WooCommerce здесь досгенерируйте свою подпись OAuth и, наконец, encodedUrl, а затем передайте ее своему http-клиенту.Этот процесс включает в себя: (см. Документацию для получения подробных спецификаций для каждого раздела)
- Сбор метода запроса и URL-адреса
- Сбор всех параметров
oauth_*
и кодирование их в одну строку с использованиемпроцентное кодирование и правильный порядок.Например (взято из WooCommerce Docs): oauth_consumer_key=abc123&oauth_signature_method=HMAC-SHA1
- Создайте базовую строку для подписи, соединив значения 1 и 2. Например: (еще раз из Docs):
GET&http%3A%2F%2Fwww.example.com%2Fwp-json%2Fwc%2Fv2%2Forders&oauth_consumer_key%3Dabc123%26oauth_signature_method%3DHMAC-SHA1
Наконец, сгенерируйте подпись, используя HMAC-SHA1 (также поддерживается HMAC-SHA256).
Лично я бы порекомендовал первый или второй подход.«Не нужно изобретать велосипед».
РЕДАКТИРОВАТЬ: Вы можете посмотреть этот вопрос , в котором обсуждается, как вы можете использовать самозаверяющие сертификаты в локальной среде разработчикас OkHttp.