Codenameone Rest API在行:1列:1缓冲区进行JSON解析时抛出JSON解析错误:异常

Codenameone Rest API在行:1列:1缓冲区进行JSON解析时抛出JSON解析错误:异常,codenameone,Codenameone,我正在使用RESTAPI,当我使用Rest.put()时,它会抛出一个错误。它甚至根本没有到达服务器。我不知道我错在哪里。 这是我的密码: Response<String> res = Rest.put(URLLinks.getMainBackend() + "items") .body(reqJson.toString()) .jsonContent()

我正在使用RESTAPI,当我使用Rest.put()时,它会抛出一个错误。它甚至根本没有到达服务器。我不知道我错在哪里。 这是我的密码:

Response<String> res = Rest.put(URLLinks.getMainBackend() + "items")
                        .body(reqJson.toString())
                        .jsonContent()
                        .bearer(initForm.data.getString("jwt"))
                        .header("token", initForm.data.getString("token"))
                        .pathParam("id", item.getId())
                        .onErrorCodeJSON((errorData) -> {
                            if (errorData.getResponseCode() == 404) {
                                Dialog dlg = rich.Dialog("Not found!");

                                Button yes = new Button("Close");
                                yes.addActionListener(ev -> {
                                    dlg.dispose();
                                });

                                dlg.add(new SpanLabel("//////!"));
                                dlg.add(FlowLayout.encloseRight(yes));
                                dlg.showPacked(BorderLayout.CENTER, true);
                            }else if (errorData.getResponseCode() == 402){
                               
                            }
                        })
                        .getAsString();

显然,在使用.pathparam()时,还必须在url中添加参数。因此,我将代码调整为:

Response<String> res = Rest.put(URLLinks.getMainBackend() + "items"+item.getId())
                        .body(reqJson.toString())
                        .jsonContent()
                        .bearer(initForm.data.getString("jwt"))
                        .header("token", initForm.data.getString("token"))
                        .pathParam("id", item.getId())
                        .onErrorCodeJSON((errorData) -> {
                            if (errorData.getResponseCode() == 404) {
                                Dialog dlg = rich.Dialog("Not found!");

                                Button yes = new Button("Close");
                                yes.addActionListener(ev -> {
                                    dlg.dispose();
                                });

                                dlg.add(new SpanLabel("//////!"));
                                dlg.add(FlowLayout.encloseRight(yes));
                                dlg.showPacked(BorderLayout.CENTER, true);
                            }else if (errorData.getResponseCode() == 402){
                               
                            }
                        })
                        .getAsString();
Response res=Rest.put(urlinks.getmainbend()+“items”+item.getId())
.body(reqJson.toString())
.jsonContent()
.bearer(initForm.data.getString(“jwt”))
.header(“token”,initForm.data.getString(“token”))
.pathParam(“id”,item.getId())
.onErrorCodeJSON((错误数据)->{
if(errorData.getResponseCode()==404){
Dialog dlg=rich.Dialog(“未找到!”);
按钮是=新按钮(“关闭”);
是。addActionListener(ev->{
dlg.dispose();
});
dlg.add(新的span标签(“//!”);
dlg.add(FlowLayout.enclosureRight(是));
dlg.showcacked(BorderLayout.CENTER,true);
}else if(errorData.getResponseCode()==402){
}
})
.getAsString();

我猜id是空的,但很难说,因为您的项目库似乎已经过时了。在Codename One中,设置会根据您拥有的Codename One版本更新项目库。关于过时的库,我遵循了此链接中的过程,当我在更新netbeans中的一些其他插件时,它向我显示它也在更新Codename One,我并不介意。我刚刚意识到我的插件被降级了。也许@Shai Almog应该调查一下。这不是更新代码名一的过程。这就是更新插件的过程。通过旧UI中的Codename One设置->基本->更新项目库以及新UI中右侧的菜单选项更新Codename One。谢谢
    java.io.IOException: Stream closed
[Network Thread] 0:0:54,316 - Exception: java.io.IOException - Stream closed
[Network Thread] 0:0:54,344 - Exception during JSON parsing at row: 1 column: 1 buffer: 
    at com.codename1.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:140)
    at com.codename1.io.BufferedInputStream.read1(BufferedInputStream.java:338)
    at com.codename1.io.BufferedInputStream.read(BufferedInputStream.java:445)
    at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
    at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
    at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
    at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
    at com.codename1.io.JSONParser$ReaderClass.read(JSONParser.java:191)
    at com.codename1.io.JSONParser.parse(JSONParser.java:278)
    at com.codename1.io.JSONParser.parseJSON(JSONParser.java:568)
    at com.codename1.io.rest.RequestBuilder$Connection.readUnzipedResponse(RequestBuilder.java:785)
    at com.codename1.io.gzip.GZConnectionRequest.readResponse(GZConnectionRequest.java:67)
    at com.codename1.io.ConnectionRequest.performOperationComplete(ConnectionRequest.java:1002)
    at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:340)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Response<String> res = Rest.put(URLLinks.getMainBackend() + "items"+item.getId())
                        .body(reqJson.toString())
                        .jsonContent()
                        .bearer(initForm.data.getString("jwt"))
                        .header("token", initForm.data.getString("token"))
                        .pathParam("id", item.getId())
                        .onErrorCodeJSON((errorData) -> {
                            if (errorData.getResponseCode() == 404) {
                                Dialog dlg = rich.Dialog("Not found!");

                                Button yes = new Button("Close");
                                yes.addActionListener(ev -> {
                                    dlg.dispose();
                                });

                                dlg.add(new SpanLabel("//////!"));
                                dlg.add(FlowLayout.encloseRight(yes));
                                dlg.showPacked(BorderLayout.CENTER, true);
                            }else if (errorData.getResponseCode() == 402){
                               
                            }
                        })
                        .getAsString();