zoukankan      html  css  js  c++  java
  • http 400错误【原】

    http 400错误现象:

    使用java代码访问某PDF文件地址, 报了http 400错误 ,浏览器却能正常访问 . 所以猜测浏览器对地址做了额外处理. 

    异常代码

    String srcUrl = "http://www.abc.com/王小丫/go/home";
    InputStream inputStream = new URL(srcUrl).openStream();

    上述URL类的openStream()方法内部其实还是用到了URLConnection openConnection(URL u);

    其实代码本身是没有任何问题的, 错就错在这个地址含有中文上了. 我的请求地址类似于http://www.abc.com/王小丫/go/home

    解决方法

    现在我们重点是需要对 http://www.abc.com/  之后的 "王小丫/go/home" 做URLEncoder.encode(srcString, "UTF-8"); 处理. (其实重点只在"王小丫"这三个字上,但是为了以防路径中其它地址又存在中文,所以还是对域名www.abc.com/之后的所有路径全encode更保险.

    使用与正则解析并处理后,得到的URL将是: http://www.abc.com/%E7%8E%8B%E5%B0%8F%E4%B8%AB%2Fgo%2Fhome

    public static String handleUrl(String url) {
            if (url != null) {
                Pattern p = Pattern.compile("(http://.*?/)(.*)");
                Matcher m = p.matcher(url);
                if (m.find()) {
                    String str1 = m.group(1).trim();
                    String str2 = m.group(2).trim();
                    try {
                        str2 = URLEncoder.encode(str2, "UTF-8");
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    }
                    url = str1 + str2;
                }
            }
            return url;
        }

    这个时候再用 以下代码去获取InputStream就再也不会报错了.

    String srcUrl = "http://www.abc.com/%E7%8E%8B%E5%B0%8F%E4%B8%AB%2Fgo%2Fhome";
    InputStream inputStream = new URL(srcUrl).openStream();
  • 相关阅读:
    apt-get install jdk
    progit-zh(Git中文文档)
    indexedDB bootstrap angularjs 前端 MVC Demo
    状态模式
    使用TypeConverter类
    wpf 全局异常捕获处理
    WPF 中的形状和基本绘图概述
    WPF设计自定义控件
    WPF快速入门系列(9)——WPF任务管理工具实现
    WPF快速入门系列(8)——MVVM快速入门
  • 原文地址:https://www.cnblogs.com/whatlonelytear/p/10141214.html
Copyright © 2011-2022 走看看