Ключ API всегда отсутствует, когда я пытаюсь получить доступ к API MailChimp с помощью Retrofit

Я уверен, что это не проблема для тех, кто знает, что они делают, но я впервые использую API и модификацию MailChimp. По сути, мой ключ API всегда отсутствует. Я понятия не имею, как выглядит правильный URL-адрес MailChimp, когда вы включаете ключ API.

URL я пытаюсь это:

/3.0/lists/613cd953b2/members?user=email@gmail.com:apikey

И другие из этого разнообразия

http://developer.mailchimp.com/documentation/mailchimp/reference/lists/members/

curl - запрос GET \

--url 'https: //.api.mailchimp.com/3.0/' \

--user 'anystring: your_apikey'

Это говорит GET, но я пытаюсь опубликовать сообщение.

Вот мой код Android / Java...

final OkHttpClient client = new OkHttpClient();
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    client.interceptors().add(interceptor);


    client.interceptors().add(new Interceptor() {
        @Override
        public com.squareup.okhttp.Response intercept(Chain chain) throws IOException {
            Request original = chain.request();

            Request.Builder requestBuilder = original.newBuilder()
                   // .header("Authorization", basic)
                    .header("user", "email@gmail.com:apikey");

            Request request = requestBuilder.build();
            return chain.proceed(request);
        }
    });

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .client(client)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    //Create interface instance
    MailChimpAPI apiService = retrofit.create(MailChimpAPI.class);

    Email chimpEmail = new Email("hi@hi.hi");

    Call<Email> call = apiService.addUser(chimpEmail);
    call.enqueue(new Callback<Email>() {
        @Override
        public void onResponse(Response<Email> response, Retrofit retrofit) {
            int statusCode = response.code();
            //Log.d("tag", "enter the void");
            Log.d("tag", statusCode + "");
            Log.d("tag", client.toString());
        }

        @Override
        public void onFailure(Throwable t) {
            Log.d("tag", t.toString());
        }
    });

И как я определяю свой метод интерфейса

@POST("/3.0/lists/613cd953b2/members")
Call<Email> addUser(@Body Email email);

И мой журнал модернизации...

D/OkHttp: --> POST /3.0/lists/613cd953b2/members HTTP/1.1
D/OkHttp: {"email_address":"hi@hi.hi","merge_fields":{"FNAME":"","LNAME":""},"status":""}
D/OkHttp: --> END POST (79-byte body)
D/OkHttp: <-- HTTP/1.1 401  (299ms)
D/OkHttp: OkHttp-Selected-Protocol: h2
D/OkHttp: server: nginx
D/OkHttp: content-type: application/problem+json; charset=utf-8
D/OkHttp: x-request-id: 6b6ca6a9-c141-45fc-8de7-ec0922892bbf
D/OkHttp: link: <https://us12.api.mailchimp.com/schema/3.0/ProblemDetailDocument.json>; rel="describedBy"
D/OkHttp: vary: Accept-Encoding
D/OkHttp: date: Tue, 05 Jan 2016 21:21:45 GMT
D/OkHttp: set-cookie: _AVESTA_ENVIRONMENT=prod; path=/
D/OkHttp: OkHttp-Sent-Millis: 1452028904738
D/OkHttp: OkHttp-Received-Millis: 1452028904830
D/OkHttp: {"type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/","title":"API Key Missing","status":401,"detail":"Your request did not include an API key.","instance":""}
D/OkHttp: <-- END HTTP (193-byte body)

1 ответ

Я не использовал обычную аутентификацию должным образом. Я следовал этому уроку

https://futurestud.io/blog/android-basic-authentication-with-retrofit

и это исправило мою ошибку! Уй за новые ошибки!

Также для будущих людей, может быть, это может помочь вам.

БАЗОВАЯ АВТОРИЗАЦИЯ - это не просто способ что-то описать! Это актуальная концепция и осуществима! ха-ха

Другие вопросы по тегам