[size=x-large][b]0、特別說明[/b][/size]
2、測試api的多附件上傳,請查閱
[url=使用httpclient4實現api測試實戰(2)——多附件上傳[/url]
[size=x-large][b]1、引言[/b][/size]
由於專案開發需要實現已有的api介面的測試,但api介面使用了token驗證機制,使用soupui進行測試時,每次都需要先獲取token,然後再進行登入,接著才能進行相關api介面的測試。顯然後面的api介面測試是我們需要的,而獲取token和登入都不是我們想要的,有沒有辦法跳過這兩個步驟,直接進行api介面測試呢?
答案是肯定的,下面我們就使用httpclient實現api測試進行實戰。
[size=x-large][b]2、新建測試專案[/b][/size]
[size=large][b]2.1 新增專案依賴[/b][/size]
[size=large][b]2.2 新建httpclient幫助類httpclientutil[/b][/size]
[size=large][b]2.3 新建xml幫助類xmlutil[/b][/size]
public class xmlutil catch (exception e)
}return doc;
}// 從xml檔案中獲取節點的值
public static string getcontentfromxml(string xml, string nodename)
public static string getcontentfromxml(string xml, string nodename, int index)
}} catch (exception e)
return value;}}
[size=large][b]2.4 新建api幫助類apiutil[/b][/size]
public class apiutil
return token;
}// oauth的accounttoken的獲得
public static string accounttoken(string key, string secret) else
} else
}// 使用者登入介面
[size=large][b]2.5 apiutil中增加測試方法[/b][/size]
public static void main(string argus)
[size=large][b]2.6 執行測試[/b][/size]
執行測試類後,出現「http/1.1 302 moved temporarily」錯誤,但類似的**在瀏覽器中執行沒有問題,這究竟是什麼原因造成?該如何解決呢?
[size=x-large][b]3、302錯誤的原因及解決方法[/b][/size]
(1)soso問問中「http/1.1 302 moved temporarily」的內容如下:
[quote]
應該是連線超時
302 moved temporarily (redirect) 你所連線的頁面進行了redirect
302 found 類似於301,但新的url應該被視為臨時性的替代,而不是永久性的。注意,在http1.0中對應的狀態資訊是「moved temporatily」,而httpservletresponse中相應的常量是sc_moved_temporarily,而不是sc_found。出現該狀態**時,瀏覽器能夠自動訪問新的url,因此它是乙個很有用的狀態**。為此,servlet提供了乙個專用的方法,即sendredirect。使用response.sendredirect(url)比使用response.setstatus(response.sc_moved_temporarily)和response.setheader("location",url)更好。這是因為:
首先,**更加簡潔。
第二,使用sendredirect,servlet會自動構造乙個包含新鏈結的頁面(用於那些不能自動重定向的老式瀏覽器)。
最後,sendredirect能夠處理相對url,自動把它們轉換成絕對url。
注意這個狀態**有時候可以和301替換使用。例如,如果瀏覽器錯誤地請求http://host/~user(缺少了後面的斜槓),有的伺服器返回301,有的則返回302。
嚴格地說,我們只能假定只有當原來的請求是get時瀏覽器才會自動重定向。
[/quote]
(2)從上面關於302錯誤的內容,聯絡到api伺服器是採用了nginx進行反向**的,該錯誤應該是由於api介面由反向**進行了重定向,從而導致出現302錯誤;
(3)google相關的解決辦法,在stack overflow上找到了解決方法,在httpclientutil中獲取httpclient例項中增加重定向策略,**如下
[b]原依賴jar包[/b]
[b]替換後的依賴jar包[/b]
(5)執行測試**,登入介面login執行成功;
[size=x-large][b]4、參考資料[/b][/size]
[1]
[2]
[3]
HttpClient 4 訪問遠端服務
1.帶ssl證書 獲取sslsocketfactory物件 sslsocketfactory ssf sslcontext.getsocketfactory 建立httpsurlconnection物件,並設定其sslsocketfactory物件 設定連線引數 conn.setdoinput tr...
使用 HttpClient 4 進行檔案上傳
1.概述 本教程我們將描述如何使用httpclient 4進行一次多檔案上傳操作.我們將使用 作為測試伺服器,因為它是面向公眾的,並且接受大多數型別的內容.如果你想要深入學習並了解你可以使用 httpclient 做到的其它很棒的事情 那就去看看首要的 httpclient 教程吧 2.使用 add...
使用 HttpClient 4 進行檔案上傳
1.概述 本教程我們將描述如何使用httpclient 4進行一次多檔案上傳操作.我們將使用 作為測試伺服器,因為它是面向公眾的,並且接受大多數型別的內容.如果你想要深入學習並了解你可以使用 httpclient 做到的其它很棒的事情 那就去看看首要的 httpclient 教程吧 2.使用 add...