Rest API throws JSON parsing error: Exception during JSON parsing at row: 1 column: 1 buffer

Rest API throws JSON parsing error: Exception during JSON parsing at row: 1 column: 1 buffer

我正在使用 Rest API,当我使用 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();

它抛出一个错误:

java.io.IOException: Stream closed
[Network Thread] 0:0:12,855 - Codename One revisions: 4afb54f6a5cecd2b6fbee170262d5c3c8d9431f9

[Network Thread] 0:0:12,855 - Exception: java.io.IOException - Stream closed
[Network Thread] 0:0:12,858 - Exception during JSON parsing at row: 1 column: 1 buffer: 
[EDT] 0:0:12,874 - Exception: java.lang.NullPointerException - null
    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:124)
    at com.codename1.io.JSONParser.parse(JSONParser.java:188)
    at com.codename1.io.JSONParser.parseJSON(JSONParser.java:475)
    at com.codename1.io.rest.RequestBuilder$Connection.readUnzipedResponse(RequestBuilder.java:683)
    at com.codename1.io.gzip.GZConnectionRequest.readResponse(GZConnectionRequest.java:67)
    at com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:809)
    at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:282)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.lang.NullPointerException
    at java.base/java.lang.String.<init>(String.java:537)
    at com.codename1.io.rest.RequestBuilder.getAsString(RequestBuilder.java:361)
    at com.falcontechnology.items.NewItem.backendItem(NewItem.java:425)
    at com.falcontechnology.items.NewItem.lambda$itemFields(NewItem.java:296)
    at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349)
    at com.codename1.ui.Button.fireActionEvent(Button.java:570)
    at com.codename1.ui.Button.released(Button.java:604)
    at com.codename1.ui.Button.pointerReleased(Button.java:708)
    at com.codename1.ui.Form.pointerReleased(Form.java:3356)
    at com.codename1.ui.Component.pointerReleased(Component.java:4552)
    at com.codename1.ui.Display.handleEvent(Display.java:2080)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1052)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:970)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

第NewItem.java:425 行的空指针指向.getAsString() 所在的行。 我可能做错了什么?

编辑

我更新了我的项目库,它解决了 .getAsString() 上的空指针异常,但它仍然留下另一个错误:

    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)

显然,当您使用 .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();