簡體   English   中英

從MAF應用程序調用Oracle MCS自定義API

[英]Oracle MCS Custom API call from MAF Application

我在Oracle MCS中創建了一個自定義API,以獲取用戶信息並嘗試從MAF應用程序中調用它。作為響應,我得到200作為成功代碼...但是當我嘗試解析響應時,它顯示了HTML頁面而不是實際響應。

自定義API

https://mobileportalsetrial1304dev-mcsdem0001.mobileenv.us2.oraclecloud.com:443/mobile/custom/rvs_ekkfetchuserinfo/fetchcontentuserid=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;
}

傑森解析

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腳本文件

預期產量

{
    "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"
        }
    ]
}

HTML頁面的內容是什么(我假設它將具有一些JavaScript,但也應該具有HTML標題)。 無論如何,MCS中的用戶ID不是101,而是內部ID,因此我不知道您是否為這個問題選擇了101。

在MAF中,REST連接是通過具有根URL和相對URI的REST連接定義的。 在您的示例中,REST連接被稱為“ MiddlewareAPI”。 除非此連接的值為null,否則需要將您提供的restURI減少為不包含根URL。

您收到的HTTP 200是因為服務器已回答了該請求。 但是,它似乎缺少授權用戶(如果訪問API的基本授權失敗)或不允許通過身份驗證的用戶請求用戶平台API(默認情況下,您只能請求有關您重新使用的用戶的信息)認證為)。

坦率

嗨,我有解決方案...我試圖通過Oracle-MCS調用customAPI。 我用HttpsURLConnection替換了RestServiceAdapter 然后就可以正常工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM