【发布时间】:2023-03-15 10:14:01
【问题描述】:
我想发送 {"name":"super user","status":1} 但发送时出现此错误
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at com.service.RoleService.updateRole(RoleService.java:145)
at com.service.RoleService.main(RoleService.java:176)
这里是代码
URL url = new URL("http://localhost:31109/user/role/"+role_id);
HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setDoOutput(true);
httpConnection.setRequestMethod("PUT");
httpConnection.setRequestProperty("Content-Type", "application/json");
httpConnection.setConnectTimeout(15000);
String input = "{\"name\":\""+name+"\",\"status\":"+status+"}";
System.out.println(input);
OutputStream outputStream = httpConnection.getOutputStream();
outputStream.write(input.getBytes());
outputStream.flush();
if(httpConnection.getResponseCode() !=200){
String error_resp;
BufferedReader error_responseBuffer = new BufferedReader(new InputStreamReader(
(httpConnection.getErrorStream())));
while((error_resp = error_responseBuffer.readLine()) != null){
System.out.println("Error responsecode => "+httpConnection.getResponseCode()+"error => "+error_resp);
output = new JSONObject(error_resp);
}
}else {
BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
(httpConnection.getInputStream())));
String httpresponse;
StringBuilder content = new StringBuilder();
while((httpresponse = responseBuffer.readLine()) != null){
content.append(httpresponse);
}
output = new JSONObject(content.toString());
}
httpConnection.disconnect();
但是,当我发送 {"name":"super user","status":"1"} 请求是正常的,但 API 有一个验证,要求它作为整数并拒绝它。而且我无法更改 api。
【问题讨论】:
-
如果您的代码使用一个输入但不能使用另一个输入,这意味着您的代码没问题,问题在于您发送到的 API
-
您的代码没有说明您在哪里创建阅读器并获取 NullPointerException
-
您显示的错误是客户端还是服务器端? api 期望是什么整数?您可以控制服务器端吗?你应该改进你的问题
-
@nandsito api 需要 {"name":"super user","status":1} 但是当它尝试使用上面的代码发送它时它会中断。有一个空指针异常。但是当我用 {"name":"super user","status":"1"} 调用它时,代码不会破坏它,只是 api 在其验证中拒绝它
-
@ControlAltDel 我已经编辑了调用http请求的完整代码
标签: java json http httpclient