1. コンテンツタイプとは
Content-Type はコンテンツの種類と文字エンコーディングを表します。コンテンツ タイプは MIME タイプとも呼ばれます。それはインターネットメディアタイプ、インターネットメディアタイプです。インターネット上で送信されるデータにはさまざまなデータ型があり、HTTP ではデータ オブジェクトを送信するときに、データ型を区別するために MIME と呼ばれるデータ形式のタグを付けます。
リクエスト ヘッダーの content-type は、B 側から S 側に送信されるデータ タイプの記述です。つまり、私が送信したデータは特定の種類であり、サーバー側はデータの種類ごとに異なる処理方法を採用していることをサーバー側に伝えます。
応答ヘッダーの content-type は、S 側から B 側に送信されるデータ タイプの説明です。つまり、送信したデータの形式をブラウザ側に伝えると、ブラウザ側はデータの種類に応じて異なる処理方法を採用します。
2. 構文形式:
1. タイプフォーマット
タイプ/サブタイプ(;パラメータ)? タイプ
パラメータ | 説明する |
---|---|
タイプ | メインタイプ、テキストなどの任意の文字列、* の場合はすべてを意味します |
サブタイプ | サブタイプ。html などの任意の文字列。* の場合はすべてを意味します。 |
パラメータ | オプション。Accept リクエストヘッダーの q パラメーター、Content-Type の charset パラメーターなどの一部のパラメーター |
2. 一般的なメディア形式の種類
タイプ | 説明する |
---|---|
テキスト/html | HTML形式 |
エクスト/プレーン | プレーンテキスト形式 |
テキスト/xml | XML形式 |
画像/gif | gif画像形式 |
画像/jpeg | jpg画像形式 |
画像/png | PNG画像形式 |
アプリケーション/xhtml+xml | XHTML形式 |
アプリケーション/xml | XMLデータ形式 |
アプリケーション/アトム+xml | Atom XML 集約形式 |
アプリケーション/json | JSONデータ形式 |
申請書/PDF | PDF形式 |
アプリケーション/msword | Word文書形式 |
アプリケーション/オクテットストリーム | バイナリ ストリーミング データ (一般的なファイル ダウンロードなど) |
application/x-www-form-urlencoded | フォーム フォーム データはキー/値形式にエンコードされ、サーバーに送信されます (データ送信用のフォームのデフォルト形式) |
マルチパート/フォームデータ | フォームでファイルアップロードを行う場合 |
3. Content-Type と Accept の違い
HTTP ヘッダー: 一般ヘッダー、リクエスト ヘッダー、応答ヘッダー、およびエンティティ ヘッダー。
リクエスタのHTTPヘッダ構造:一般ヘッダ、リクエストヘッダ、エンティティヘッダ レスポンダ
のHTTPヘッダ構造:一般ヘッダ、レスポンスヘッダ、エンティティヘッダ
参考リンク:HTTPにおけるContent-TypeとAccept
- 違い:
受け入れる | コンテンツタイプ |
---|---|
リクエストヘッダー | エンティティヘッダー |
送信者 (クライアント) が受け入れたいデータの種類 | 送信者 (クライアント|サーバー) によって送信されたエンティティ データのデータ型 |
- 例:
Accept: text/xml; ——” は、クライアントが受け入れたいデータ型が xml であることを意味します
Content-Type: text/html; ——” は、送信者によって送信されるデータ形式が html であることを意味します
3、Content-Typeの使用
1. ブラウザにファイルを応答すると、応答を通じてファイルがブラウザに返され、ブラウザは解析してダウンロードを完了します。
以下は一般的な方法です。
認証に成功しました
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
//2.设置文件头:最后一个参数是设置下载文件名(注意是带后缀的)
String name = new String(fileName.getBytes("gb2312"), "ISO8859-1");
response.setHeader("Content-Disposition", "attachment;fileName="+name);
2. HttpURLConnection を使用して他の人のサードパーティ インターフェイスを呼び出すには、リクエストを設定する必要があります。
1) サードパーティのインターフェイスはパラメータを json 形式で渡す必要があります
確認済み
//设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive"); //维持长链接
conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
2) サードパーティのインターフェイスはファイルを転送する必要があります
未検証
String Boundary = UUID.randomUUID().toString(); // 文件边界
// 1.开启Http连接
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setConnectTimeout(10*1000);
conn.setDoOutput(true); // 允许输出
// 2.Http请求行/头
conn.setRequestMethod("POST");
conn.setRequestProperty("Charset", "utf-8");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary="+Boundary);
// 3.Http请求体
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeUTF("--"+Boundary+"\r\n"
+"Content-Disposition: form-data; name=\"file\"; filename=\"filename\"\r\n"
+"Content-Type: application/octet-stream; charset=utf-8"+"\r\n\r\n");
InputStream in = new FileInputStream(file);
byte[] b = new byte[1024];
int l = 0;
while((l = in.read(b)) != -1) out.write(b,0,l); // 写入文件
out.writeUTF("\r\n--"+Boundary+"--\r\n");
out.flush();
out.close();
in.close();
// 4.Http响应
BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
String line = null;
while ((line=bf.readLine())!=null) {
System.out.println(line);
}
3) サードパーティのインターフェイスはファイルとその他のパラメータを転送する必要があります
ちょっと複雑です、Baidu、または後で遭遇したときにまとめます
コンテンツ タイプの調査はここでやめましょう!!!!!! 次のプロジェクトは Baidu と出会いました
———————————————
原文およびこの声明の出典へのリンク。
元のリンク: https://blog.csdn.net/weixin_43453386/article/details/83512451