コンテンツタイプを理解する

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

おすすめ

転載: blog.csdn.net/weixin_70280523/article/details/131970549