HttpURLConnectionおよびGETおよびPOSTリクエスト

2766 ワード

2つのリクエスト方式
URLリクエストには通常2つの方法があります.GETリクエストとPOSTリクエストGETリクエストのデータはURLの後に添付されます.伝達されたパラメータをつなぎ合わせ、パラメータ間を&で接続します.要求で送信されたパラメータがアルファベットまたは数字であればそのまま送信され、スペースは+に変換され、中国語または他の文字はbase 64ビットで暗号化され、%E4%BD%A0%E5%A5%BDと同様の形式が得られ、%xxはこの記号が16進数で表されるASCIIコードである.POSTリクエストのパラメータはURL文字列に入れるのではなく、HTTPリクエストの本文内に入れられ、リクエストのパラメータはカプセル化されてサービス側にストリームとして送信される.両者の主な違い:GET要求パラメータは直接URLの後ろに接続され、プライバシーが悪く、長さが制限される可能性があり、GET要求はキャッシュされ、一般的な要求のデフォルトはGETである.POST要求は実体コンテンツを通じてパラメータのプライバシー性を伝達するのが良くて、大きさは制限がなくて、POST要求はキャッシュすることができなくて、POSTを採用することを宣言する必要があります.一般にGetはサーバにデータを要求する要求であり,Postはサーバにデータを送信する要求である.
HttpURLConnection使用
HttpURLConnectionは、指定されたWebサイトにGETリクエスト、POSTリクエストを送信するために使用できるURLConnectionから継承されます.
URL url = new URL("URL");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(true);

1.URLを呼び出す.OpenConnection()は、新しいHttpURLConnectionオブジェクトを取得し、結果として強制的にHttpURLConnection 2に変換する.リクエストの準備をします.パラメータはURIです.リクエストヘッダには、証明書や約束されたリクエスト内容などのメタデータも含まれる場合があります.3.要求体を選択的にアップロードできます.HttpURLConnectionインスタンスは、リクエストボディが含まれている場合はsetDoOutput(true)を設定する必要があります.getoutStream()から返される出力ストリームにデータを書き込むことで、データを転送します.4.応答を読み込みます.応答ヘッダには、通常、応答体のコンテンツタイプや長さなどのメタデータが含まれ、日付やセッションcookiesを変更します.応答体は、getInputStreamによって返される入力ストリームによって読み取ることができる.応答に応答体がない場合、メソッドは空のストリームを返します.5.接続を閉じます.応答体が読まれると、HttpURLConnectionオブジェクトはdisconnect()を呼び出して閉じる必要があります.接続を切断すると、connectionによって占有されているリソースが解放され、閉じたり再使用したりすることができます.
手順:
urlインスタンスの作成(基本固定)
URL url=new URL("   url");
HttpURLConnection connection= (HttpURLConnection) url.openConnection();

接続の設定
connection.setRequestMethod("POST");//      ,   GET
connection.setDoOutput(true);//     httpUrlConnection  ,post  ,     http   ,    true;       false。
connection.setDoInput(true);//   httpUrlConnection  ,      true; 
connection.setUseCaches(false);//        ,Post       
connection.setInstanceFollowRedirects(true);//      

要求ヘッダパラメータの設定
connection.setRequestProperty("Accept", "application/json");
setRequestProperty(key,value);
addRequestProperty(key,value);

setRequestPropertyは、既存のkeyのすべてのvaluesを上書きし、ゼロをクリアして再割り当てする役割を果たします.addRequestPropertyは、元のkeyに基づいて他のvalueを追加し続けます.
リクエストの送信
connection.connect();
getOutputStream

getoOutputStreamにはconnect(上記のconnect()メソッドを呼び出すのと同じ)を暗黙的に行います.connect()を呼び出さなくてもいいです.
応答の取得
connection.getContent()
connection.getInputStream()
connection.getHeaderField ()

ほとんどのリクエストでは、getInputStreamとgetContentが最も一般的です.