отправка запроса с модификацией получает ответ как неправильный запрос в android - PullRequest
1 голос
/ 26 марта 2020

Я использую https://docs.ngenius-payments.com/reference#hosted -payment-page для оплаты в android

Заголовки: добавьте эти заголовки к вашему запросу (обратите внимание, что вы должны заменить 'your_api_key' на ключ API учетной записи службы в разделе Начало работы).

Значение заголовка Content-Type application / vnd.ni-identity.v1 + json

Основы авторизации c: your_api_key

Тело / данные формы: добавьте следующую информацию к форме / содержанию своего запроса.

Пример запроса (тело): JSON {'realmName': 'ni'}

это заголовки и тип контента, и я создал метод post, используя модификацию

   public static Retrofit getRetrofitClient() {
    //If condition to ensure we don't create multiple retrofit instances in a single application
    if (retrofit == null) {
        //Defining the Retrofit using Builder
        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL) //This is the only mandatory call on Builder object.
                .addConverterFactory(GsonConverterFactory.create()) // Convertor library used to convert response into POJO
                .build();
    }
    return retrofit;

}

Мой интерфейс API

@POST("identity/auth/access-token")
Call<NgeniusPaymentAccessTokenModel> nGeniusAccessToken(@Header("content-type") String ContentType, @Header("authorization") String apiKey, @Body JsonObject object);

, и я вызываю его по

    JsonObject postParam = new JsonObject();
        try {
            postParam.addProperty("realmName", "ni");
        } catch (Exception e) {
            e.printStackTrace();
        }
 Call call = apiService.nGeniusAccessToken(contentType, "Basic "+apiKey, postParam);

я получаю ответ как ошибку, сообщающую о неверном запросе, как решить эту проблему

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

это сработало для меня, я поместил все заголовки в карту заголовков

создала карту

Map<String, String> stringMap = new HashMap<>();
    try {
        stringMap.put("Authorization", "auth");
        stringMap.put("Content-Type", "CONTENT_TYPE");
        stringMap.put("accept", "accept");
    } catch (Exception e) {
        e.printStackTrace();
    }

API-интерфейс теперь выглядит как

@POST("transactions/orders")
Call<ResponseBody> nCreateOrder(@HeaderMap Map<String, String> headers,String out, @Body JsonObject object);

позвоните по номеру

 nCreateOrder(stringMap ,"out",jsonObject);
0 голосов
/ 26 марта 2020

Вы можете попробовать код ниже:

String contentType = "application/vnd.ni-identity.v1+json";
String authorization = "Basic: "+apiKey;
JSONObject postParam = new JSONObject();
        try {
            postParam.put("realmName", "ni");
        } catch (JSONException e) {
            e.printStackTrace();
        }
 Call call = apiService.nGeniusAccessToken(contentType, authorization, postParam);
...