使用HttpClient4實現API測試實戰(1)

2021-08-27 02:46:34 字數 4127 閱讀 3321

[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...