org.apache.commons.net.util.Base64的encodeBase64String方法的坑
今天在做汽車之家介面資料呼叫時,發現一個問題,由於對方伺服器有身份驗證,需要根據一定的格式將相關資訊加密然後轉成Base64然後放到http請求的header中。
我在實際操作中遇到奇怪問題,明明加密後的字串是錯的,可對方的iis服務卻能收到這個錯誤的請求,儘管不會通過身份驗證,這時返回錯誤程式碼是401,標識沒有許可權,其實就是身份驗證失敗。
但修改程式碼後,確認了加密後的字串的正確性,可對方iis服務死活接收不到請求,我觀察了下返回的錯誤程式碼是400,這標識這個請求是錯誤的,因此應該跟汽車之家的介面沒有關係,所以就仔細的檢查了請求引數。
終於….發現了問題的所在。
String encryptUrl = autohomeTripleDES.EncryptUrl(signUrl, CARHOMEUSERNAME, CARHOMEPASSWORD);
encryptUrl = Base64.encodeBase64String(encryptUrl.getBytes("UTF-8" ));
Header[] headers = {new BasicHeader("Authorization","Basic " + encryptUrl)};
String json = HttpJsonClient.getJsonData(signUrl, null, 60,headers);
這是我原來的程式碼,上面兩次encryptUrl的結果分別是如下圖,仔細看圖別被結果迷惑:
看出區別了吧,轉Base64後得到的字串結尾有多餘的東西,仔細看第二張圖,我被這張圖坑了,一開始我以為只有結尾會有,所以就直接encryptUrl.trim();結果請求死活過不去就是400,我就又回來仔仔細細的看了一遍資料,發現不單結尾有\r\n字串的中間也有\r\n
真是坑爹啊,然後使用下面程式碼把\r\n替換掉,請求成功!
String encryptUrl = autohomeTripleDES.EncryptUrl(signUrl, CARHOMEUSERNAME, CARHOMEPASSWORD).replaceAll("\r\n", "");
encryptUrl = Base64.encodeBase64String(encryptUrl.getBytes("UTF-8")).replaceAll("\r\n", "");
程式碼返回值結果參見下圖,這回正常了。
相關推薦
org.apache.commons.net.util.Base64的encodeBase64String方法的坑
今天在做汽車之家介面資料呼叫時,發現一個問題,由於對方伺服器有身份驗證,需要根據一定的格式將相關資訊加密然後轉成Base64然後放到http請求的header中。 我在實際操作中遇到奇怪問題,明明加密後的字串是錯的,可對方的iis服務卻能收到這個錯誤的請求,儘
【FTP】org.apache.commons.net.ftp.FTPClient實現復雜的上傳下載,操作目錄,處理編碼
ttr hide working log 登錄 有一個 ima spl att 和上一份簡單 上傳下載一樣 來,任何的方法不懂的,http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/
org.apache.commons.net.ftp.FTPClient
package com.util; import java.io.*; import java.net.SocketException; import java.text.SimpleDateFormat; import java.util.ArrayList; import
【Java筆記】java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解決方法
解決方法:匯入commons-logging.jar包 如果用的是maven直接用: <dependency> <groupId>commons-logging</g
FTP-org.apache.commons.net.io.CopyStreamException: IOException caught while copying.
問題(下載ftp檔案): 寫一個ftp下載程式,出現很怪異的錯誤,寫得過程中會出現空指標, 有時候又出現java.net.SocketTimeoutException: Read timed out, 還會出現org.apache.commons.net.io.CopyS
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory解決方法
解決方法:匯入commons-logging.jar包 如果用的是maven直接用: <dependency> <groupId>commons-logging</groupId> <artifact
判斷字串是否為空的org.apache.commons.lang3.StringUtils類方法isBlank()原始碼檢視
轉發請註明出處與作者。個人分析的,正確性歡迎大家一起探討,有錯誤還希望指正和批評 首先說結論:isBlank() 會把製表符(tab鍵 \t,換行符 \n ,回車鍵等一系列字元格式的unicode編碼)等作為空來處理;而我們平時使用的 if(s == null ||"".
Java org.apache.commons >commons-lang3的常用方法
一.常用方法 1. 檢查字串是否為空: static boolean isBlank(CharSequence str) 判斷字串是否為空或null; static boolean isNotBlank(CharSequence str) 判斷字串是否非空或非null;
關於出現 org.apache.commons.lang.exception.NestableRuntimeException的解決方法
出現了 org.apache.commons.lang.exception.NestableRuntimeException等狀況。實在令人頭大,翻到了一個很好的帖子說明了這個問題。 原文網址如下:1 http://blog.csdn.net/zb0567/article/detail
找不到org.apache.commons.pool2.impl.GenericObjectPoolConfig的解決方法
maven依賴版本不對,最好不要指定下級依賴的版本號,讓上級依賴去自己選擇最合適的version。 GenericObjectPoolConfig沒有找到是因為spring-data-redis版本太
java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource的解決方法
資訊: Starting Servlet Engine: Apache Tomcat/6.0.132007-12-17 19:31:06 org.apache.struts.action.ActionServlet initModuleDataSources嚴重: Initializing applicati
org.apache.commons.lang3.StringUtils工具類常用方法
在開發中,Apache 的 StringUtils 工具類有許多方法比 jdk 實現的方便許多。所有整理了幾個常用的: import org.apache.commons.lang3.StringUtils; public class StringUtilsTest {
org/apache/commons/pool/impl/GenericObjectPool 的解決方法
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext). log4j:WARN Please
3.網上解決org.apache.commons.lang.xwork.StringUtils的方法都弱爆了,看我怎麼解決它!
網上解決org.apache.commons.lang.xwork.StringUtils的方法都弱爆了,看我怎麼解決它!
使用Apache Commons Net API實現FTP上傳下載過程中的坑點
最近專案需要實現FTP上傳、下載功能,採用了Apache Commons Net API。程式碼很快就完成了,但由於對相關API使用場景不是很熟悉,走了一些彎路,抽一點時間做一下總結。 A)主動被動模式選擇:FTP主動模式和被動模式的詳細介紹可
java.lang.NoSuchMethodError: org.apache.commons.validator.Validator.setParameter(Ljava/lang/String;Ljava/lang/Object;)V解決方法
ERROR 2009-07-16 11:29:49 org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/zxtest].[action] Servlet.service() for servlet a
org.apache.commons.lang.StringUtils(StringUtils工具類的常用方法)
工作容易遇到的: 必須要8位,不夠的就拿0去補 System.out.println(StringUtils.leftPad("34", 8, "0")); // 00000034 又或者你需要在一個數組中加入一個元素,你可以這麼做: 把數組裡的字串用:連線 S
org.apache.commons.fileupload上傳臨時檔案刪除方法2則
在將檔案項封裝成FileItem 物件時,如果檔案尺寸大於臨界值,將會被寫入臨時檔案。清理方法1這些臨時檔案在不再被使用的時候(如果相應的java.io.File是可回收的則更好)會自動被刪除.這會被org.apache.commons.io.FileCleaningTrac
java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
apache con ont test oca action error esp iat 1.java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils 缺少類 2. There is no Ac
java.lang.ClassNotFoundException: org.apache.commons.dbutils.QueryRunner
ica ror server acc dwr comm erro tor reads 七月 28, 2017 11:06:33 下午 org.apache.catalina.core.StandardWrapperValve invoke嚴重: Servlet.serv