zoukankan      html  css  js  c++  java
  • 远程http请求时,后缀带空格,请求报错问题(类似word文档标题中带空格)

    当我们远程请求一个链接,类似:http://nbcb.ningbobank.test:8088/approve/goFile/我的  带 空格 的文档.docx?operate

    的时候,我们要下载的时候,会报url错误,虽然我们在浏览器的地址栏可以访问,但是我们用方法进行读取下载的时候,就会报地址不存在的错误。

    这主要是因为我们的url路径中带有空格,阻止了我们进行访问 。

    要想有效的进行下载访问,我们需要将最后的"/"后面的和"."前面的进行encode编码,这样我们再进行访问下载的时候就可以进心下载了。

    例如:

         String  urlPath="http://nbcb.ningbobank.test:8088/approve/goFile/我的  带 空格 的文档.docx?operate";

        // http://nbcb.ningbobank.test:8088/approve/goFile/

        String  headPath= urlPath.subString( 0 , urlPath.lastIndexOf("/")+1);//subString进行截取的时候,不包括最后一位,所以我们要的得到最后以为“/”就要加一;

         // 我的  带 空格 的文档

        String  middlePath=urlPath.subString(  urlPath.lastIndexOf("/")+1,  urlPath.lastIndexOf(".") );//   "/" 和 "."一定不要截取,不然编码的时候会将其进行编码。

        //   .docx?operate

         String  endPath=urlPath.subString(  urlPath.lastIndexOf(".")  );

    接下来我们将middlePath进行urlEncode编码。

           middlePath=URLEncoder.encode(middlePath);//会将空格和中文进行编码  java.net.URLEncoder

          然后我们将所有的字符串进行拼接,然后进行http请求

         String  requestPath=headPath+middlePath+endPath;

     我们拿到了最终请求的url,这样再进行http请求的时候,下载就不会报错了。

  • 相关阅读:
    Codeforces Round #398 (Div. 2) B,C
    KMP模板
    HDU1711 KMP(模板题)
    HDU3265 线段树(扫描线)
    HDU2795 线段树
    HDU1828线段树(扫描线)
    HDU1832 二维线段树求最值(模板)
    HDU1698 线段树(区间更新区间查询)
    HDU3251 最大流(最小割)
    cf2.c
  • 原文地址:https://www.cnblogs.com/songkaikai/p/10595577.html
Copyright © 2011-2022 走看看