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请求的时候,下载就不会报错了。

  • 相关阅读:
    创建类以及引用一个类
    修改hosts文件
    微信第三方登录接口开发
    Android定位
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 725. Split Linked List in Parts
    Leetcode 445. Add Two Numbers II
    Leetcode 328. Odd Even Linked List
    Leetcode 237. Delete Node in a Linked List
    Leetcode 234. Palindrome Linked List
  • 原文地址:https://www.cnblogs.com/songkaikai/p/10595577.html
Copyright © 2011-2022 走看看