java - Java中的补丁方法
问题描述
好吧,我在邮递员中有这个要求:
127.0.0.1:8000/empleado/615050/retrieve-update/
我添加了这个身体:
{"nombre":Marc}
这个请求对我有用,在我的 Django API 开发中
但是,当我尝试在我的 Java 桌面应用程序中复制此请求时,失败并且没有任何反应。这是我的 Java 代码:
public void sendJson() {
JsonObjectBuilder o = Json.createObjectBuilder();
o.add("contrasenia", txtPass.getText());
JsonObject contra = o.build();
String contraS = contra.toString();
System.out.println(contraS);
try {
URL url = new URL("http://localhost:8000/empleado/" + txtUsuario.getText() + "/retrieve-update/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("PATCH");
conn.setRequestProperty("Content-Type","application/json;charset=UTF-8");
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream os = conn.getOutputStream();
os.write(contraS.getBytes(StandardCharsets.UTF_8));
os.close();
} catch (MalformedURLException malformedURLException) {
malformedURLException.printStackTrace();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
想法?谢谢,对不起我的英语
解决方案
这是因为,不幸的是,PATCH
它不是一个合法的动词HttpURLConnection
请参阅JavadocHttpURLConnection#setRequestMethod
Set the method for the URL request, one of:
GET
POST
HEAD
OPTIONS
PUT
DELETE
TRACE
are legal, subject to protocol restrictions. The default method is GET.
有类似这里的解决方法,但您的服务器应该与自定义标头兼容。
如果我是你,我可能会尝试使用更高级的 HTTP 客户端
或任何其他
推荐阅读
- javascript - 如何为可溢出的 div 中始终可见的 thead 和 tbody 添加边框
- javascript - Flutter Web:FCM 无法注册 Service Worker
- git - 我们什么时候需要在 git 中使用 --track 命令
- java - 将 QueryDSl 与 Spring Boot App 集成时出现空指针异常
- git - 如何隔离git子模块的日志
- android - 同一个TextView中的多个id
- java - 基于单链表的FIFO队列结构
- powershell - 阵列不擦除
- spring-boot - 使用 crnk JSON API 实现 JSR-303 验证
- ssh - Bitvise ssh 在配置文件中存储加密密码