首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle MAF-MCS API调用

Oracle MAF-MCS API调用
EN

Stack Overflow用户
提问于 2015-09-22 07:30:19
回答 3查看 405关注 0票数 1

我已经创建了一个自定义POST api来获取MCS中的登录信息。当我签入SOAPUI时,它运行得非常好。传递的参数如下

代码语言:javascript
复制
1. header   
Oracle-Mobile-Backend-Id: ********************
2. Authentocation
Username:****************
password: **************

基本登录信息用户名和密码分别为"User1“和"user1”。

Step2:

当我从MAF调用API时,我得到一个错误400,post方法是

代码语言:javascript
复制
    public static Response callPost(String restURI, String jsonRequest) {
    String responseJson = "";
    Response response = new Response();

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


    restServiceAdapter.setRequestType(RestServiceAdapter.REQUEST_TYPE_POST);
    restServiceAdapter.addRequestProperty("Content-Type", "application/json");
    restServiceAdapter.addRequestProperty("Accept", "application/json; charset=UTF-8");
    restServiceAdapter.addRequestProperty("Oracle-Mobile-Backend-Id", "**********");
    restServiceAdapter.addRequestProperty("Domain", "mcsdem0001");


    restServiceAdapter.addRequestProperty("Username", "******");
    restServiceAdapter.addRequestProperty("Password", "*****");
    //restServiceAdapter.addRequestProperty("Authorization", "Basic "+new String(encodedBytes));
    System.out.println("**** Authorization String ****=>"+new String(encodedBytes));
    System.out.println("**** RestURI ******=>"+restURI);
    System.out.println("**** jsonRequest ******=>"+jsonRequest);

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

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

    return response;
}

有人能告诉我,post方法有什么错误吗??

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-23 04:46:19

这可能是由于版本冲突造成的。尝试使用HttpUrlConnection而不是RestServiceAdapter,并让我知道它是否有效。

票数 1
EN

Stack Overflow用户

发布于 2015-12-14 07:18:55

实际上这一点

restServiceAdapter.addRequestProperty("Username",“*”;restServiceAdapter.addRequestProperty("Password",“*”);

无法工作,因为您试图将用户名和密码作为HTTP头传递。相反,当你在这里尝试的时候,它应该通过。

restServiceAdapter.addRequestProperty("Authorization","Basic“+新字符串(EncodedBytes);

但是,这些不应该是编码字节,而应该是表单中的base64编码字符串。

基(没有< abd >)

注意,用户标识域只需要在多租户环境中提供。在MCS中,用户域是通过连接到的移动后端定义的。

弗兰克

票数 1
EN

Stack Overflow用户

发布于 2015-09-22 08:01:46

使用MCS实用程序库使其分配更容易。开发人员指南可以在这里找到:doc/maf/mafmcsutility-api-doc-082015.pdf

示例代码:

代码语言:javascript
复制
MBEConfiguration mbeConfiguration = 
    new MBEConfiguration(
          <mbe rest connection>,<mobileBackendId>,
          <anonymous key string>,<application key string>, 
          MBEConfiguration.AuthenticationType.BASIC_AUTH);
 mbeConfiguration.setEnableAnalytics(true);
 mbeConfiguration.setLoggingEnabled(false)
 mbeConfiguration.setMobileDeviceId(
         DeviceManagerFactory.getDeviceManager().getName());
 MBE mobileBackend = MBEManager.getManager().
         createOrRenewMobileBackend(<mobile backend Id>, mbeConfiguration);

CustomAPI customApiProxy = mbe.getServiceProxyCustomApi();
MCSRequest request = new MCSRequest(mobileBackend.getMbeConfiguration());

request.setConnectionName(<Rest connection name>);
request.setRequestURI("/moile/custom/mockup/employees");
request.setHttpMethod(MCSRequest.HttpMethod.POST);
request.setPayload("{\"id\":\"1\"\"name\":\"nimphius\",\"firstName\":\"frank\"}");
request.setRetryLimit(0);
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type","application/json");
request.setHttpHeaders(headers);
MCSResponse response = customApiProxy .sendForStringResponse(request);
String jsonResponse = (String) response.getMessage();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32710889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档