当前位置: 首页 > 知识库问答 >
问题:

来自Codename One的JSON Post请求

柳正志
2023-03-14

在过去的几天里,我一直在努力解决这个问题,我想我尝试了在互联网上找到的每一个例子。我正在尝试登录我的REST,并获取持续通信的授权码。它在使用邮递员时有效

------取自邮递员生成代码片段----

POST /api/auth/signin HTTP/1.1
Host: localhost:5000
Content-Type: application/json
cache-control: no-cache
Postman-Token: baffa067-c2a0-4d5c-b321-348682227195
{
    "username": "Test",
    "password": "Testpw"
}------WebKitFormBoundary7MA4YWxkTrZu0gW--

它回来了

{"accessToken":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNTQ0Mjc4MTE5LCJleHAiOjE1NDQ4ODI5MTl9.qNQ7MIIsWpYQdeje6Ox88KR9AdNGCSiffjyk__nrdWvP7yoy4Ukk05ZQUISVptOIoBpahFT1OHf_MXVQnW5Izg","tokenType":"Bearer"}

我的CodenameOne项目中的代码是:

 public void onloginActionEvent(com.codename1.ui.events.ActionEvent ev) {
              JSONObject json = new JSONObject();
              try {
                  ConnectionRequest post = new ConnectionRequest(){
                        @Override
                        protected void buildRequestBody(OutputStream os) throws IOException {
                            os.write(json.toString().getBytes("UTF-8"));
                        }

                        @Override
                        protected void readResponse(InputStream input) throws IOException {
                        }

                        @Override
                        protected void postResponse() {                             
                        }
                    };
                    json.put("username", "Test");
                    json.put("password", "Testpw");

                  post.setUrl("http://localhost:5000/api/auth/signin");
                  post.setPost(true);
                  post.setContentType("application/json");
                  post.addArgument("body", json.toString());
                  String bodyToString = json.toString();
                  NetworkManager.getInstance().addToQueueAndWait(post);
                  Map<String,Object> result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(post.getResponseData()), "UTF-8"));
              } catch (Exception ex) {
                  ex.printStackTrace();
              }
          }

当使用CodenameOne模拟器网络监视器时,会产生以下结果

URL: http://localhost:5000/api/auth/signin

Type: Post

Request:BodyPart: {"password":"Test","username":"Testpw"}


Request:Request Headers: User-Agent=[Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1]
Content-Type=[application/json]

Response:Body: blank

Response: Response Headers: Transfer-Encoding=[chunked]
X-Frame-Options=[DENY]
null=[HTTP/1.1 200]
Cache-Control=[no-cache, no-store, max-age=0, must-revalidate]
X-Content-Type-Options=[nosniff]
Expires=[0]
Pragma=[no-cache]
X-XSS-Protection=[1; mode=block]
Date=[Sat, 08 Dec 2018 14:14:54 GMT]
Content-Type=[application/json;charset=UTF-8]

共有1个答案

谭景明
2023-03-14

您可以覆盖readResponse,而不调用super。这将覆盖读取数据的默认行为。您可以删除该方法,或者在该方法中编写读取JSON的逻辑。

 类似资料:
  • 我正在使用最新版本的JMeter,并试图从JMeter发出POST请求,但我无法看到更改HTTP方法的下拉列表。你能告诉我为什么我看不到下拉列表吗? 请在下面找到JMeter的屏幕截图。它没有用于指定HTTP方法的下拉列表。

  • 我试图从AWS API网关上的REST API调用POST方法。使用curl(用于POST)从命令行正确调用API,使用GET从浏览器正确调用API,因此我知道它工作正常,但我似乎找不到正确的方法使用ConnectionRequest类在codename one上调用POST方法,阅读文档theres addArgument()和setRequestBody(),他们说,它们是独占的,所以我尝试了

  • 问题内容: 是否可以在JAX-RS下以REST方法访问Request对象? 我刚刚发现 问题答案: 在JAX- RS上,必须使用@Context注释Request参数: 您也可以选择注入: UriInfo HttpHeaders 安全上下文 HttpServletRequest

  • 我试图得到响应从GetFeatureInfo的样本仓储管理系统。但是得到“无法加载http://ogi.state.ok.us/geoserver/wms?SERVICE=WMS

  • 我正在编写一个具有交叉源配置的API 我的websecurity配置有 控制器类 身份验证过滤器检查 匹配。匹配总是变假 我是不是漏掉了什么? 我添加了什么额外的参数吗? 期待着迅速的回应。

  • 我正在浏览一个似乎通过javascript填充数据的网页。我想为我的浏览器使用一个扩展,它可以让我看到对什么url发出了什么请求,以及从请求中返回了什么数据。 任何帮助都将不胜感激。