高度なPythonのライブラリアプリケーション・インタフェースのテスト--Requests

クッキーの設定

Cookieの設定

インポート要求

クッキー = { ' ヒーロー'' アリックス' } 

r_cookie = requests.get(BASE_URL + ' /クッキー'、クッキー= クッキー)

プリント(r_cookie.text)

業績

{
   " クッキー" :{
     " 英雄"" アリックス" 
  } 
}

 

クッキーの取得

Baiduのホーム・ページを要求し、その後、クッキーを取得するには、以下を達成するために:

R = requests.get(' http://www.baidu.com ' 

プリント(型(r.cookies))

プリント(r.cookies)
 のためのキー、値r.cookies.items():
     プリント(キー+ " " +値)

クッキーのプロパティが正常にクッキーを受け取ることができ、あなたはそれがRequestCookieJarタイプであることを見つけることができます呼び出して、その後、アイテムを使用します()クッキートラバーサル解像度を達成するために、元祖はテーブル出力のそれぞれの名前と値のクッキーからなる二つのテーブルに変換する方法をコミットします。

 

タイムアウト

あなたは応答を待って停止する時間を記述するために設定されたタイムアウトパラメータの後に要求を行うことができます。要求が待ち状態、いくつかの一貫性のある応答を防ぐことはできません。
以下の場合は、意図的にタイムアウト後に治療に対する反応を見て、小さなタイムアウトを設定します。

クッキー= { ' ヒーロー'' ariliya ' } 

r_timeout = requests.get(BASE_URL + ' /クッキー'、クッキー=クッキー、タイムアウト= 0.001 

、印刷(r_timeout.text)

タイムアウト例外

requests.exceptions.ConnectTimeout:HTTPConnectionPool(ホスト= ' httpbin.org '、ポート= 80):最大再試行回数は、URLを上回っ:/クッキーを(ConnectTimeoutError(<0x0000017E45DFC860でurllib3.connection.HTTPConnectionオブジェクト>によって引き起こされる、httpbinへの接続を。 orgがタイムアウトになりました。(タイムアウト= 0.001を接続します)"))

 

 

ファイルをアップロード

要求は、パラメータファイルのアナログデータファイルを使用して送信することができ、いくつかのインタフェースが含まれてファイルをアップロードするために私たちを必要とし、我々はまた、アップロードするために使用することができ、次のように、実装は非常に単純である例を示します。

ファイル= { ' ファイル':オープン(' 01.jpg '' RB ' )} 

r_up = requests.post(BASE_URL + ' /ポスト'、ファイル= ファイル)

プリント(r_up.text)

ヒント:同じディレクトリにファイルをアップロードするには

 

Sessionオブジェクト

特にとして知られているネットワークアプリケーション、コンピュータでは、「セッション制御。」Sessionオブジェクトは、私の絵のユーザー固有の設定情報や属性を格納するために必要。このように、ユーザーがアプリケーション内のWebページ間をジャンプするとき、Sessionオブジェクトに格納された変数は、20が全会一致でユーザーセッション全体で存在して失われることはありません。
たとえば、最初のログイン操作は、男は、個人詳細ページセンターを開設した後に行う、個人の詳細ページの中央には、ちょうどあなたが情報を保存するためにセッションを使用する必要があり、ここで、ユーザーの情報に上陸したことを表示する方法を知っています。
インタフェースのテストプロセスでは、いくつかの新兵が存在しない状態でセッションを保存し、そのようなクッキークッキーの取得中に別の形式を定義し、次の2つの要求として、多くの場合、インタフェースの関係に依存して、第2のインターフェースは、インターフェースの最初のセットを取得することはできませんクッキーの値

設定クッキーの 
R&LT requests.get =(BASE_URL + ' /クッキー/ SET /ヒーロー/ leesin ' 

印刷(r.text) 


クッキーを取得し、このクッキーが空で、取得したセッションを保存する必要がクッキー

R01 = requests.get(BASE_URL + ' /クッキー' 

を印刷(r01.text)

返却値

{
   " クッキー" :{
     " 英雄"" leesin " 
  } 
} 

{ 
  " クッキー" :{} 
}

 

あなたが特定のパラメータを維持するための要求を渡ることができるようにセッションオブジェクトを要求します。彼はまた、同じセッションインスタンスの問題のためのすべての要求の間でクッキー残ります。

生成されたセッションオブジェクト 
S = requests.session() 

設定クッキー 
R&LT s.get =(BASE_URL + ' /クッキー/ SET /ヒーロー/ leesin ' 

プリント(r.text) 

取得クッキー 
R01 = s.get(BASE_URL + ' /クッキー' 

を印刷(r01.text)

 

返却値

{
   " クッキー" :{
     " 英雄"" leesin " 
  } 
} 

{ 
  " クッキー" :{
     " 英雄"" leesin " 
  } 
}

したがって、シミュレーションセッションの使用はクッキーの問題を一行ものセッションで行われますが、ないことができ、その後、成功した着陸後の作業の次のステップは、一般的にシミュレートするために使用します

 

プロキシ設定

また、ネットワークエージェントとして知られているプロキシ(プロキシ)は、(通常はサーバ)中断された別のネットワーク間接接続して、このサービスを介して、ネットワークの停止(通常はクライアント)を可能にするネットワークサービスの特別な種類である
顧客にプロキシサーバーを端末との間で、インターネットにアクセスし、サーバーは、クライアント要求を受信し、クライアントのIPアドレスは、標的部位への要求を行う置き換え、すべてのトラフィックのルートがいくつかのリソースを得るために、プロキシサーバからのもので直接利用できません。
いくつかのインターフェイスの場合、一度にテスト要求に数回、適切にコンテンツを取得することができます。しかし、あなたが大規模な頻繁に(例えば、性能とされる)要求を開始一度サーバが認証を開くかもしれません。でも、IP禁止。あなたはこの問題を解決するためのプロキシを必要とするこれを防ぐために、我々は、頻繁に使用される薬剤、爬虫類をこのパラメータ要求プロキシをチャネルする必要があります。

西とげフリーエージェント

プロキシ設定

proxie = { ' HTTP '' http://114.230.69.81:9999 ' } 

R = requests.get(BASE_URL + ' /得る'、プロキシ= proxie)

プリント(r.text)

 

認証

多くのインターフェイスが認証を必要とする、要求が複数の認証をサポート
にBasicAuthとによるdigestauth:例次の種類では、地方の2種類を検証しました

requests.auth インポートHTTPBasicAuth
 から requests.auth インポートHTTPDigestAuth 

にBasicAuth 

r_basic = requests.get(BASE_URL + ' /基本-AUTH /ヒーロー/ leesin '、AUTH = HTTPBasicAuth(' ヒーロー'' leesin ' ))

プリント(r_basic。テキスト)

によるdigestauth 

r_digest = requests.get(BASE_URL + ' /消化-AUTH / AUTH /ヒーロー/ leesin '、AUTH = HTTPDigestAuth(' ヒーロー'' leesin '))

プリント(r_digest.text)

返却値

{
   " 認証" :真、 
   " ユーザー"" ヒーロー" 
} 

、{ 
  " 認証" :真、 
   " ユーザー"" 英雄" 
}

 

ストリーミング要求

インターフェイスの数が値がない単語が結果をむしろ特別返しされる戻りあり、20の以上の結果、例えば、10ランキング情報前の商品の値を返すクエリインタフェース。
実際のケース
次のように要求インターフェースは:
http://httpbing.org/stream/{num}
結果セットnumは例えば10 10個の異なる入力されたID結果は番号、返される戻り
我々のプロセスインターフェイスこのタイプの結果セットiter_linesは、()内のオフィスに反復的なアプローチを使用する必要があります。

輸入JSON 
R&LT = requests.get(BASE_URL + ' /ストリーム/ 10 '、ストリーム= TRUE)
印刷(r.encoding) 

レスポンスの内容はエンコーディング、デフォルトの設定は設定されていない場合、8 UTF。
IF r.encodingはありませんなし:
    r.encoding = ' UTF-8。' 

#の応答の反復処理結果
のためのライン r.iter_lines(decode_unicode = 真):
     IF :ライン
        データ = json.loads(ライン)
         印刷(データ[ ' ID ' ])

返却値

0
 1 
2 
3 
4 
5 
6 
7 
8 
9

 

おすすめ

転載: www.cnblogs.com/youngleesin/p/11109270.html