发送休假请求时,为什么会收到http错误代码500

阿金·唐梅兹(Akin Donmez)

当我将网址放在浏览器中时,我可以获取json

http://api.openweathermap.org/data/2.5/weather?q=Rome, Italy&appid=2de143494c0b295cca9337e1e96b00e0

但是,当我通过带有http get请求的java通过java收到http错误代码500时,为什么?

private String getWeather(Booking booking){
        StringBuilder sb = new StringBuilder();
        URL url;
        try {
            url = new URL("http://api.openweathermap.org/data/2.5/weather?q="+booking.getDestination()+"&appid=2de143494c0b295cca9337e1e96b00e0");
            System.out.println(url);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : "
                        + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }
            conn.disconnect();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



        return sb.toString();
    }
怀疑论者

当您创建URL或URI时,存在有关在其中每个部分允许使用哪些字符的规则。不允许有空格。其他字符(如/&等),必须在URL特定的含义,使他们不能在参数本身存在。创建URI的标准在RFC 3986中

URI中不允许的此类字符可以通过将序列替换为来转义%20%3F以此类推。

当您将具有空格之类的非法字符的URL粘贴到浏览器位置字段中时,现代浏览器通常会自动对其进行更正。因此,他们将用%20替换空格++对于空格使用,是较旧的标准,仍在Web表单中使用)。校正不完美。例如,大多数浏览器将无法正确修复包含的参数&因此,如果您尝试使用Sarajevo, Bosnia&Herzegovina代替Rome, Italy,则浏览器可能会解释Herzegovina为一个单独的空参数的名称。

但是无论如何,当参数包含在URI中时,必须对其进行转义。最基本的使用方法是:

url = new URL("http://api.openweathermap.org/data/2.5/weather?q="
               + URLEncoder.encode(booking.getDestination(), "UTF-8")
               + "&appid=2de143494c0b295cca9337e1e96b00e0");

这在很多情况下都可以使用-但它使用的是我刚才谈到的旧标准,即用代替空格的标准+该标准与RFC 3986标准字符转义有一些其他区别。许多Web服务器对这些差异并不挑剔,可以正确解释该值。

但是,如果您正在使用的REST服务器对标准合规性挑剔,则应使用真实的URI转义。我没有在Java标准版中意识到的方法,但是:

  • 如果使用的是J2EE兼容平台,则可以使用javax.ws.rs.core.UriBuilder该类来构建URI。
  • 如果您使用的是Spring,则它具有UriUtils类。
  • 番石榴有一PercentEscaper堂课。
  • 等等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么会收到422错误代码?

来自分类Dev

为什么会收到错误代码404?

来自分类Dev

通过TCP套接字发送手工制作的HTTP请求时,为什么会收到HTTP 400错误请求响应?

来自分类Dev

向Giphy API提出请求时,为什么会收到HTTP错误403?

来自分类Dev

为什么会收到“处理您的请求时发生错误”?

来自分类Dev

为什么单击已部署代码上的特定链接时会收到 500 错误?

来自分类Dev

尽管发送了状态代码,为什么仍会收到“错误:发送标头后无法设置标头”?

来自分类Dev

为什么HttpRequestValidationException的HTTP错误代码为500,而不是400?

来自分类Dev

搜索库时为什么会收到此错误消息?

来自分类Dev

当我尝试通过访存与Api连接时,为什么会收到“错误请求”错误400?

来自分类Dev

为什么会收到警告“死代码”?

来自分类Dev

为什么会收到这些错误消息?

来自分类Dev

为什么HTTP错误代码从100开始

来自分类Dev

尝试连接ASANA api时为什么会收到500状态?

来自分类Dev

为什么发送空POST请求时出现内部错误500

来自分类Dev

为什么发送空POST请求时出现内部错误500

来自分类Dev

当多个进程监听端口时,tomcat为什么会收到请求?

来自分类Dev

为什么有时我会收到并发NSURLSession请求的回复混乱

来自分类Dev

当 App-Servicename 包含“ß”时,为什么我会收到消息“请求被限制”

来自分类Dev

改装发布请求不起作用,并且我收到500错误代码(内部服务器错误)

来自分类Dev

为什么在hackerrank上我的代码会收到“由于超时而终止”错误?

来自分类Dev

为什么我会收到关于此代码的无效错误?

来自分类Dev

为什么我会收到任何 Java 代码的“错误:无法找到或加载主类”?

来自分类Dev

为什么在尝试编译示例代码时会收到错误“找不到 -lcurl”?

来自分类Dev

为什么在使用 Visual Studio Code 编写 Python 代码时会收到 2 条错误消息?

来自分类Dev

从PowerShell调用F#代码时,为什么会收到MissingMethodException?

来自分类Dev

从PowerShell调用F#代码时,为什么会收到MissingMethodException?

来自分类常见问题

尝试将按钮添加到GridPane时为什么会收到错误消息?

来自分类Dev

尝试获取公共映像时,为什么会收到Docker的授权错误?

Related 相关文章

  1. 1

    为什么会收到422错误代码?

  2. 2

    为什么会收到错误代码404?

  3. 3

    通过TCP套接字发送手工制作的HTTP请求时,为什么会收到HTTP 400错误请求响应?

  4. 4

    向Giphy API提出请求时,为什么会收到HTTP错误403?

  5. 5

    为什么会收到“处理您的请求时发生错误”?

  6. 6

    为什么单击已部署代码上的特定链接时会收到 500 错误?

  7. 7

    尽管发送了状态代码,为什么仍会收到“错误:发送标头后无法设置标头”?

  8. 8

    为什么HttpRequestValidationException的HTTP错误代码为500,而不是400?

  9. 9

    搜索库时为什么会收到此错误消息?

  10. 10

    当我尝试通过访存与Api连接时,为什么会收到“错误请求”错误400?

  11. 11

    为什么会收到警告“死代码”?

  12. 12

    为什么会收到这些错误消息?

  13. 13

    为什么HTTP错误代码从100开始

  14. 14

    尝试连接ASANA api时为什么会收到500状态?

  15. 15

    为什么发送空POST请求时出现内部错误500

  16. 16

    为什么发送空POST请求时出现内部错误500

  17. 17

    当多个进程监听端口时,tomcat为什么会收到请求?

  18. 18

    为什么有时我会收到并发NSURLSession请求的回复混乱

  19. 19

    当 App-Servicename 包含“ß”时,为什么我会收到消息“请求被限制”

  20. 20

    改装发布请求不起作用,并且我收到500错误代码(内部服务器错误)

  21. 21

    为什么在hackerrank上我的代码会收到“由于超时而终止”错误?

  22. 22

    为什么我会收到关于此代码的无效错误?

  23. 23

    为什么我会收到任何 Java 代码的“错误:无法找到或加载主类”?

  24. 24

    为什么在尝试编译示例代码时会收到错误“找不到 -lcurl”?

  25. 25

    为什么在使用 Visual Studio Code 编写 Python 代码时会收到 2 条错误消息?

  26. 26

    从PowerShell调用F#代码时,为什么会收到MissingMethodException?

  27. 27

    从PowerShell调用F#代码时,为什么会收到MissingMethodException?

  28. 28

    尝试将按钮添加到GridPane时为什么会收到错误消息?

  29. 29

    尝试获取公共映像时,为什么会收到Docker的授权错误?

热门标签

归档