URL url = new URL("http://myserver.com/myendpoint");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//connection.setRequestMethod("POST") <- this didn't help either
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("string=test");
out.close();
connection.close()
上面的代码在桌面 JVM 上工作,发送一个 post 请求,在服务器端成功解析并返回 200,但是在 android 上,请求方法仍然是 GET(是的,我检查过它是错误的)并导致 404 异常。官方文档说将 doOutput 设置为 true 会触发将请求方法设置为 POST,但事实并非如此。
最佳答案
404 也不异常(exception)。它是您向其发出请求的服务器返回的 HTTP 状态代码,表示未找到您向其发出请求的网址。这与是否设置 POST 无关。
要检查的事情:
- 如果您向其发出请求的 url 是正确的。
- 如果服务器有一个 POST Controller /处理程序映射到您正在向其发出请求的 url。
- 询问开发服务器的人是否正确处理了这些案例,以及他是否为相关场景发送了正确的响应代码。
额外信息:如果 url 已在服务上注册但不允许 POST 请求,您将收到 415 响应代码。
关于java - HttpUrlConnection 方法在 Android 上始终为 GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37162873/