1. 程式人生 > >HttpClient的get方法引數有特殊字元的解決辦法

HttpClient的get方法引數有特殊字元的解決辦法

pom檔案

		
		<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.5</version>
</dependency>
		

get方法

 @RequestMapping("redirect")
    @ResponseBody
    public JSONObject getRedirectUrl(HttpServletRequest request, String path) throws UnsupportedEncodingException
    {

        if (!path.startsWith("\\d"))
        {
            path = "http://localhost:8080/" + path;

        }
        else
        {

            path = "http://" + path;
        }
        // 獲取引數
        Map<String, String[]> parameterMap = request.getParameterMap();
        Set<Entry<String, String[]>> entrySet = parameterMap.entrySet();
        for (Entry<String, String[]> entry : entrySet)
        {
            if (!"path".equals(entry.getKey()))
            {
                if (StringUtils.isNotBlank(entry.getValue()[0]))
                {

                    path += entry.getKey() + "=" + URLEncoder.encode(entry.getValue()[0], "utf-8") + "&";
                }
            }
        }

        JSONObject json = null;

        // 1.使用預設的配置的httpclient
        CloseableHttpClient client = HttpClients.createDefault();
        // 2.使用get方法
        HttpGet httpGet = new HttpGet(path);
        CloseableHttpResponse response = null;

        try
        {
            // 3.執行請求,獲取響應
            response = client.execute(httpGet);

            // 看請求是否成功,這兒列印的是http狀態碼
            System.out.println(response.getStatusLine().getStatusCode());
            // 4.獲取響應的實體內容,就是我們所要抓取得網頁內容
            HttpEntity entity = response.getEntity();

            // 5.將其列印到控制檯上面
            // 方法一:使用EntityUtils
            if (entity != null)
            {
                String json_String = EntityUtils.toString(entity, "utf-8");
                // System.out.println(json_String);
                json = JSONObject.parseObject(json_String);
            }
            EntityUtils.consume(entity);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        return json;
    }

相關推薦

HttpClient的get方法引數特殊字元解決辦法

pom檔案 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org

android 網路請求url中特殊字元解決方法

經常在get網路請求中有特殊字元,系統編碼 自動轉譯這些特殊字元有些字元在URL中具有特殊含義,基本編碼規則如下:特殊含義 十六進位制值1.+ 表示空格(在 URL 中不能使用空格) %202./ 分隔目錄和子目錄 %2F3.? 分隔實際的 URL 和引數 %3F4.% 指定

oracle使用like匹配特殊字元解決辦法

想要匹配出所有MC帶有 "_" 的資料, select * from lm where mc like '%_%' ; 這是一種錯誤的寫法,因為 oracle會預設把  '_' 作為一個可以匹配

前端 url 引數提交特殊字元解決方法

用  JavaScript encodeURIComponent() 函式 定義和用法 encodeURIComponent() 函式可把字串作為 URI 元件進行編碼。 語法 encodeURIComponent(URIstring)

url 傳遞引數(特殊字元) 解決方法

在做網頁的時候,偶爾會遇到url被截斷的情況,一般是出現在有引數的url中,比如www.baidu.com?a=1&b=2,有時候就會出現url只傳遞了www.baidu.com?a=1後邊的url被截斷了,出現這種情況一般最有效的解決方案是把&符號用%26替換,這樣ww

url 傳遞引數(特殊字元)解決方法

首先設定 apache 配置檔案, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼 十六進位

exp 時遇到密碼特殊字元(!@#)解決方法

  今天exp資料庫時,遇到密碼有特殊字元情況(!@#)之前沒遇到過,oracle不能正確識別net服務名,嘗試很多辦法,現在總結一下:      1、在windows系統解決辦法                 exp  使用者名稱/“““密碼”””@net服務名  fi

url 傳遞引數(特殊字元)解決方法

url 傳遞引數(特殊字元)解決方法  首先設定 apache 配置檔案, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。下表中列出了一些URL特殊符號及編碼

VS2017在專案中匯入已程式碼檔案各種方法的一些問題的解決辦法

1.在VS中通過步驟:檔案->新建->從現有程式碼建立專案,這樣方法把現有程式碼加到工程檔案,其實VS只是在你程式碼所在檔案建立了VS必須的.sln等等專案所需檔案,這種方法建立的專案在需要包含如:#include<stdio.h>這種常用庫時,可能會

iOS xcode程式碼中空格變為特殊字元~解決方法

//聯絡人:石虎 QQ: 1224614774 暱稱:嗡嘛呢叭咪哄 一、概念 比如:NSString *string;(*號前有空格),是正常的. 操作不當,程式碼突然變為:NSStr

ExtJs radiogroup form.loadRecord方法無法賦值正確解決辦法

true 情況下 log load 狀態 form stat spa ems 一、radiogroup的name和radio的name一致,inputValue為整形 { xtype: ‘radiogroup‘, fieldLabel: ‘是否有效‘,

win10 +python3.6環境下安裝opencv以及pycharm導入cv2問題的解決辦法

eclipse 需要 info nbsp tail 博客 令行 嘗試 功能 一、安裝opencv   借鑒的這篇博客已經寫得很清楚了--------https://blog.csdn.net/u011321546/article/details/79499598

bp標準方法寫不進資料解決辦法

業務場景:在建立BP的時候,我們會使用CALL METHOD vmd_ei_api=>maintain_bapi來建立BP,但是有的時候專案上會碰到有些欄位is_master_data的接口裡沒有或者有並且賦值了但是卻寫不進去的情況,在這專案上剛好碰到了這2種情況,這裡

字串中特殊字元的處理

用正則表示式進行轉換處理   使用正則表示式也是一種常用的處理方式,實現原理就是使用替換的方式來實現轉碼和解碼,轉碼時把<>,空格符,&,’,""替換成html編碼,解碼就把html編碼替換成對應的字元,實現程式碼如下: var HtmlUtil = { /1.用正則

struts2 <action>無法使用萬用字元解決辦法

在我們使用struts2的時候,肯定不想每一個方法就寫一<action>,所以通常我們會使用萬用字元,簡化我們的程式碼。  <action name="userAction_*" class="userAction" method="{1}" >  

關於在Tomcat伺服器上釋出專案時測試資料的特殊情況解決辦法

今天我寫了個簡單的使用者名稱密碼登入驗證專案給組員,中間用JavaBean測試時起的類名叫User,然後在傳引數的時候一直報錯(我用的DbUtils工具包測的),後來琢磨半天才發現問題出在這兒: 如圖,在我每次寫User的時候開發工具會自動提示剩餘程式碼,然而在這裡它提供的User有三

關於聯想筆記本ThinkPad E470 沒有外音 插耳機卻聲音的解決辦法

碰到這種情況,小編和大家一樣選擇裝置管理器,找到音效卡驅動解除安裝重新裝,結果很失望,選擇驅動精靈/聯想驅動重灌音效卡,結果很絕望。並沒有解決問題。 最後小編參考了一篇文章找到了解決辦法 到聯想官方網站服務介面:https://newsupport.lenovo.com.cn/ 在搜尋框輸入自己筆記

chosen(下拉列表帶搜尋外掛)和layer(彈出框外掛)在一起使用會衝突,解決辦法

可以選擇用window.open()和chosen外掛結合使用,這樣就不會有衝突。   chosen外掛的使用: 1、先把js和css檔案引用到網頁裡面去: <link href="js/jqueryUI/chosen/chosen.css" ty

[Java]錯誤:編碼GBK的不可對映字元解決辦法

1.前提:出現如下錯誤: >>>javac test1.java >>>test1.java:3: 錯誤: 編碼GBK的不可對映字元>>>          &n

layui呼叫自定義方法提示未定義的解決辦法

呼叫test()時提示未定義 layui.use(['layer', 'form', 'element'], function(){ var layer = layui.layer ,form = layui.form ,element = layui.element  &