首页 > 解决方案 > Codenameone 执行 Postman REST 调用

问题描述

使用 Postman,我能够成功连接到我的登录服务器并接收访问令牌。

我想在我的 CN1 代码中复制这个调用

这是我的邮递员脚本:

卷曲

curl --location --request POST 'https://myloginserver.com/accounts/login' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username=myusername' \
--data-urlencode 'password=mypassword'

爪哇

Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://myloginserver/accounts/login")
  .header("Content-Type", "application/x-www-form-urlencoded")
  .field("username", "myusername")
  .field("password", "mypassword")
  .asString();

这是我的 CN1 代码

        ConnectionRequest getTokenConnReq = null;
        try {
            getTokenConnReq = new ConnectionRequest("https://myloginserver.com/accounts/login");
            getTokenConnReq.setPost(true);
            getTokenConnReq.addRequestHeader("Content-Type","application/x-www-form-urlencoded");
            getTokenConnReq.setHttpMethod("POST");
            getTokenConnReq.setRequestBody("username=myusername&password=mypassword");
            getTokenConnReq.setFailSilently(true);
            getTokenConnReq.setCookiesEnabled(false);
            NetworkManager.getInstance().addToQueueAndWait(getTokenConnReq);
            result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(getTokenConnReq.getResponseData()), DocumentInfo.ENCODING_UTF8));
            return result;
        } catch (Exception err22) {
            System.err.println(err22);
            return null;
        }

不幸的是,我的回答从 300 到 400 不等,具体取决于我如何调整代码。请告知我如何在 CN1 中使用它?

(我认为这可能与 Cookies 有关,因为我确实看到 Postman 在后台向呼叫添加 cookie)

任何帮助将不胜感激。

谢谢

标签: codenameone

解决方案


我建议使用Rest更容易用于此类调用的 API:

Rest.post("https://myloginserver.com/accounts/login")
    .contentType("application/x-www-form-urlencoded")
    .queryParam("username", username)
    .queryParam("password", password)
    .fetchAsJsonMap(result -> {
         Map parsedJson = result.getResponseData();
         // key/value pairs from the resulting JSON
    });

推荐阅读