1

我在 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;
}

json解析

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"] is not found ...当我打印响应消息时,它会给出一个 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"
        }
    ]
}
4

2 回答 2

1

HTML 页面的内容是什么(我假设它会有一些 JavaScript,但也应该有一个 HTML 标题)。无论如何,MCS 中的用户 ID 不是 101 而是内部 ID,所以我不知道您是否选择了 101 来简化这个问题。

在 MAF 中,REST 连接是通过具有根 URL 和相对 URI 的 REST 连接来定义的。在您的示例中,REST 连接被称为“MiddlewareAPI”。除非此连接的值为 null,否则您提供的 restURI 需要减少为不包含根 URL。

您获得的 HTTP 200 是因为服务器响应了请求。但是,它似乎缺少授权用户(在访问 API 的基本授权失败的情况下)或者不允许经过身份验证的用户请求用户平台 API(默认情况下,您只能请求有关您所访问的用户的信息认证为)。

坦率

于 2015-12-14T07:06:35.217 回答
1

嗨,我得到了解决方案...我试图通过 Oracle-MCS 调用 customAPI。我替换RestServiceAdapterHttpsURLConnection. 然后它工作得很好。

于 2016-04-06T07:08:54.067 回答