我只是想发送请求并读出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请求为null” 所以看起来服务器通过GET方法读取请求。
我在网络方面不是那么坚定,但据我所知,我确保setDoOutput(true);
使用POST方法,不是吗?
当我得到任何答案时,我知道有一个联系,但可能是头部的东西是错的?是否有必要发送它?
所以我的问题是,是什么原因导致我或服务器对http方法感到困惑?
我想我错过了使用java网络处理。
对每一个帮助都很高兴。
答案 0 :(得分:2)
您也可以明确地指定POST
方法,如下所示(看看是否解决了问题):
connection.setRequestMethod("POST");
connection.connect();
是的,URLConnection.seDoOutput(true)
表示您打算使用URLConnection
输出(默认为false
),并隐式告诉HttpURLConnection
使用POST
。
我的假设是您没有将请求参数传递给Web服务。关于使用URLConnection
。
答案 1 :(得分:0)
如果请求方法确实是GET并且它在HTTP级别是非法的,那么根本不会获得所有XML,只是HTTP错误代码。看起来更像是目标上的SOAP层问题,或者是您要发送的XML的问题。
答案 2 :(得分:0)
简单的答案是: 在每个请求行的末尾添加一些“\ n”,它可以正常工作。