gpt4 book ai didi

java - 为什么服务器在 POST 方法请求后会返回 GET 响应?

转载 作者:行者123 更新时间:2023-12-02 08:09:27 25 4
gpt4 key购买 nike

我只是尝试发送请求并读出 ogc sos 服务器的答案。

发送请求:

connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Accept-Charset", charset);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset="+charset);
connection.connect();

阅读回复:

output = connection.getOutputStream();
output.write(query.getBytes(charset));
input = new URL(url).openStream();
Reader reader = new InputStreamReader(input);
BufferedReader bufferedReader = new BufferedReader(reader);
StringBuilder response = new StringBuilder();
String line = null;

while((line = bufferedReader.readLine()) != null)
response.append(line+"\n");

bufferedReader.close();
output.close();

服务器的响应是:

<?xml version="1.0" encoding="UTF-8"?>
<ows:ExceptionReport xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0"
xsi:schemaLocation="http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd">
<ows:Exception exceptionCode="InvalidRequest" locator="REQUEST">
<ows:ExceptionText>The GET request null is not supported by this SOS.</ows:ExceptionText>
</ows:Exception>
</ows:ExceptionReport>

格式是特殊的sos类型,但主要消息是“GET请求为空”所以看起来服务器是通过GET方法读取请求的。

我对网络不是那么坚定,但据我了解,我通过 setDoOutput(true); 确保使用 POST 方法,不是吗?

当我得到任何答案时,我知道两者之间存在联系,但可能是头部出了问题吗?是否每次都需要发送?

所以我的问题是是什么原因让我或服务器对 http 方法感到困惑?

我想我没有使用java网络处理。

很高兴得到每一个帮助。

最佳答案

您还可以显式指定 POST 方法,如下所示(查看是否解决了问题):

connection.setRequestMethod("POST");
connection.connect();

是的,URLConnection.seDoOutput(true) 表示您打算使用 URLConnection 进行输出(默认为 false)并且隐式告诉 HttpURLConnection 使用 POST

我的假设是您没有将请求参数传递给 Web 服务。查看此相关SO post关于使用 URLConnection

关于java - 为什么服务器在 POST 方法请求后会返回 GET 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com