Вызов Oracle MCS Custom API из приложения MAF

Я создал собственный API в Oracle MCS, чтобы получить информацию о пользователе и пытаться вызвать ее из приложения MAF... В качестве ответа я получаю 200 как код успеха... но когда я пытаюсь разобрать ответ, он показывает HTML страница вместо фактического отклика....

Пользовательский API

https://mobileportalsetrial1304dev-mcsdem0001.mobileenv.us2.oraclecloud.com/mobile/custom/rvs_ekkfetchuserinfo/fetchcontent и userid=101 как параметр

Вызов метода для получения информации о пользователе

    @Override
public Response getUserInformation(int userId) {
    System.out.println("In loginService");
    String restURI = "https://mobileportalsetrial1304dev-mcsdem0001.mobileenv.us2.oraclecloud.com:443/mobile/custom/rvs_ekkfetchuserinfo/fetchcontent?userid=" + userId;
    String jsonRequest = "";

    Response response = new Response();

    response = RestUtil.callGet(restURI, jsonRequest);

    return response;
}

Метод callGet

public static Response callGet(String restURI, String jsonRequest) {
    String responseJson = "";
    Response response = new Response();
    System.out.println("restURI:" + restURI);

    RestServiceAdapter restServiceAdapter = Model.createRestServiceAdapter();
    restServiceAdapter.clearRequestProperties();
    restServiceAdapter.setConnectionName("MiddlewareAPI");
    restServiceAdapter.setRequestType(RestServiceAdapter.REQUEST_TYPE_GET);

    restServiceAdapter.addRequestProperty("Content-Type", "application/json");
    restServiceAdapter.addRequestProperty("Accept", "application/json; charset=UTF-8");
    restServiceAdapter.addRequestProperty("Oracle-Mobile-Backend-Id", "da5c7d86-29c0-43e8-b613-53de55a7ae6c");
    restServiceAdapter.addRequestProperty("Authorization", "Basic TUNTREVNMDAwMV9NT0JJTEVQT1JUQUxTRVRSSUFMMTMwNERFVl9NT0JJTEVfQU5PTllNT1VTX0FQUElEOmR5Nm91NW5wX3RnbE5r");//+new String(encodedBytes));

    restServiceAdapter.setRequestURI(restURI);
    restServiceAdapter.setRetryLimit(0);

    try {
        responseJson = restServiceAdapter.send(jsonRequest);
        System.out.println("response" + responseJson);
        int responseCode = restServiceAdapter.getResponseStatus();
        System.out.println("responseCode" + responseCode);
        response.setResponseCode(responseCode);
        response.setResponseMessage(responseJson);
        response.setHeader(restServiceAdapter.getResponseHeaders());
    } catch (Exception e) {
        System.out.println("Error in calling API" + e.getStackTrace());

        int responseCode = restServiceAdapter.getResponseStatus();
        response.setResponseCode(responseCode);
        response.setResponseMessage(responseJson);

    }


    return response;
}

Json Parsing

JSONObject obj = new JSONObject(response);
JSONArray arr = obj.getJSONArray("posts");
for (int i = 0; i < arr.length(); i++)
{
    String user_id = arr.getJSONObject(i).getString("UserId");
}

Вот что я получаю: JSONObject["items"] не найден... когда я печатаю ответное сообщение, оно дает файл HTML Script

Ожидаемый результат

{
    "items": [
        {
            "UserId": "101",
            "AgentId": null,
            "Category": "Rental",
            "Division": "KDR",
            "Status": null,
            "LocationId": null,
            "Operation": "CheckOut",
            "Admin": "N",
            "createdBy": "mcs-demo_user09@oracleads.com",
            "createdOn": "2015-09-25T11:29:10.215564+00:00",
            "modifiedBy": "mcs-demo_user09@oracleads.com",
            "modifiedOn": "2015-09-25T11:29:10.215564+00:00"
        }
    ]
}

2 ответа

Решение

Привет, я получил решение... Я пытался вызвать customAPI через Oracle-MCS. Я заменил RestServiceAdapter с HttpsURLConnection, Тогда это работает отлично.

Что такое содержимое страницы HTML (я предполагаю, что она будет иметь некоторый JavaScript, но также должна иметь заголовок HTML). В любом случае, идентификатор пользователя в MCS - это не 101, а внутренний идентификатор, поэтому я не знаю, выбрали ли вы 101 для упрощения этого вопроса.

В MAF соединение REST определяется через соединение REST с корневым URL и относительным URI. В вашем примере REST-соединение называется MiddlewareAPI. Если значение этого соединения не равно нулю, оставляемый вами restURI необходимо уменьшить, чтобы он не содержал корневой URL.

HTTP 200 вы получаете, потому что сервер отвечает на запрос. Однако, по-видимому, отсутствует либо авторизованный пользователь (в случае неудачной базовой авторизации для доступа к API), либо авторизованный пользователь не имеет права запрашивать API пользовательской платформы (по умолчанию вы можете запрашивать только информацию о пользователе, которого вы используете. аутентифицирован как).

Фрэнк

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