java - Http Post - 通讯失败 - 为什么?
问题描述
我用 Java (Android Studio) 编写了一个 HTTP POST,以从 NodeRed 数据库中获取一些信息。
当我执行此代码时,不会出现错误。但是数据库创建了一个带有空字段的条目,并且应该给一个带有数据的 JsonArray 的响应只是一个空的 JsonArray。
有人看到错误吗?如果我用 Postman 测试数据库,一切正常。不仅如此,我已经编写了一个不带任何参数的 GET,它也可以正常工作。
这是我的 POST 方法:
URL url = new URL("https://example-page.de/ExistingUser");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
String boundary = "===" + System.currentTimeMillis() + "===";
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
con.setRequestProperty("Accept", "*/*");
con.setRequestProperty("Host", "example-page.de");
con.setRequestProperty("Connection", "keep-alive");
con.setRequestProperty("Cache-control", "no-cache");
con.setUseCaches (false);
con.setDoInput(true);
con.setDoOutput(true);
//Create REQUEST content
DataOutputStream wr = new DataOutputStream(con.getOutputStream ());
PrintWriter writer;
String LINE_FEED = "\r\n";
String charset = "UTF-8";
String name = "EMail";
String value = "hans.wurst";
writer.append("--" + boundary).append(LINE_FEED);
writer.append("Content-Disposition: form-data; name=\"" + name + "\"").append(LINE_FEED);
writer.append("Content-Type: application/json; charset=" + charset).append(LINE_FEED);
writer.append(LINE_FEED);
writer.append(value);
writer.flush();
writer.append(LINE_FEED).flush();
writer.append("--" + boundary + "--").append(LINE_FEED);
writer.close();
//Read Response
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
con.disconnect();
解决方案
您似乎没有将表单数据部分添加到正确的输出流中。您无需创建另一台打印机。
DataOutputStream wr = new DataOutputStream(con.getOutputStream ());
//PrintWriter writer;
String LINE_FEED = "\r\n";
String charset = "UTF-8";
String name = "EMail";
String value = "hans.wurst";
wr.append("--" + boundary).append(LINE_FEED);
wr.append("Content-Disposition: form-data; name=\"" + name + "\"").append(LINE_FEED);
wr.append("Content-Type: application/json; charset=" + charset).append(LINE_FEED);
wr.append(LINE_FEED);
wr.append(value);
wr.flush();
wr.append(LINE_FEED).flush();
wr.append("--" + boundary + "--").append(LINE_FEED);
wr.close();
推荐阅读
- android - 在我的设备上启动时看不到 Cardview
- php - PHP 在 Imagick 中删除 alpha 导致图片损坏
- javascript - 上下文 API 更新状态导致循环请求
- javascript - 请求的模块“./react.js”不提供名为“默认”的导出
- elixir - 如何检索 `iex` 中所有已加载的模块?
- c - NASM x86 核心转储写入内存
- javascript - 如何将 requirejs 文件加载到 creat-react-app
- pytorch - Pytorch 分类交叉熵损失函数行为
- c - 结构和数组中的结构
- java - 从支持 bean 更新输入组件