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