Как получить доступ к Klavio API в Android с помощью HTTP-вызова Retrofit в AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как получить доступ к Klavio API в Android с помощью HTTP-вызова Retrofit в Android

Сообщение Anonymous »

МЕТОД ОТПРАВКИ
URL: https://a.klaviyo.com/api/profile-subsc ... eate-jobs/
Это мой метод запроса публикации:

Код: Выделить всё

Header : revision:2024-07-15
content-type:application/json
accept:application/json
Authorization:Klaviyo-API-Key android89459832432sdskjha
request body raw type :

{"data":{"type":"profile-subscription-bulk-create-job","attributes":{"profiles":{"data":[{"type":"profile","attributes":{"email":"anilkt87@gmail.com"}}]}},"relationships":{"list":{"data":{"type":"list","id":"YXOSus"}}}}}
когда я пытаюсь выполнить указанный выше запрос от Postman, я могу получить ответ 200.
когда я пытаюсь выполнить тот же код с помощью Retrofit в Android используя приведенный ниже код:

Код: Выделить всё

 public void createSubscription() {
klaviyoService = KalvioRetrofitClient.getKlaviyoService();
String data = "{\"data\":{\"type\":\"profile-subscription-bulk-create-job\",\"attributes\":{\"profiles\":{\"data\":[{\"type\":\"profile\",\"attributes\":{\"email\":\"anilkt87@gmail.com\"}}]}},\"relationships\":{\"list\":{\"data\":{\"type\":\"list\",\"id\":\"YXOSus\"}}}}}";
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(data);
} catch (JSONException e) {
throw new RuntimeException(e);
}
Call call = klaviyoService.createSubscription(jsonObject);
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
Log.d("Klaviyo", "Subscription status: " + response);
} else {
Log.e("Klaviyo", "Failed to create subscription: " + response.errorBody());
}
}

@Override
public void onFailure(Call call, Throwable t) {
Log.e("Klaviyo", "Error creating subscription", t);
}
});
}

public class KalvioRetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String baseUrl) {
if (retrofit == null) {
// Set up logging interceptor (optional, for debugging)
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);

OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@NonNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request request = chain.request().newBuilder().addHeader("Content-Type", "application/json")
.addHeader("accept", "application/json").addHeader("revision", "2024-07-15").addHeader("Authorization", "Klaviyo-API-Key android89459832432sdskjha").build();
return chain.proceed(request);
}
})
.build();

retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}

public static KlaviyoService getKlaviyoService() {
return getClient("https://a.klaviyo.com/").create(KlaviyoService.class);
}
}

public interface KlaviyoService {
@POST("api/profile-subscription-bulk-create-jobs")
Call createSubscription(@Body JSONObject klaviyoRequest);

}
Я получаю сообщение об ошибке 400. Не удалось создать подписку: okhttp3.ResponseBody$Companion$asResponseBody$1@a3bd973
Я не знаю, почему возникает эта ошибка, хотя я указал правильный ключ и идентификатор списка. То же самое работает нормально в Post Man, но не используется модификация. позвоните.
может ли кто-нибудь мне помочь, что я делаю неправильно?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/788 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»