91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 10KB
    文件類型: .java
    金幣: 1
    下載: 1 次
    發布日期: 2021-11-28
  • 語言: Java
  • 標簽: java??http??

資源簡介

一個對chunked編碼進行解碼的例子,通過java socket實現發送http請求,對gzip壓縮的消息體進行解碼處理。

資源截圖

代碼片段和文件信息

package?test;

import?java.io.BufferedReader;
import?java.io.ByteArrayInputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.io.OutputStreamWriter;
import?java.io.UnsupportedEncodingException;
import?java.net.InetAddress;
import?java.net.Socket;
import?java.net.UnknownHostException;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.zip.GZIPInputStream;

public?class?TransferEncoding?{
private?static?String?encoding?=?“UTF-8“;

public?static?void?main(String[]?args)?{
????????try?{??
????????????Socket?socket?=?new?Socket(InetAddress.getByName(“www.iteye.com“)?80);??
????????????socket.setSoTimeout(10000);?//?10秒鐘超時。?
????????????OutputStreamWriter?osw?=?new?OutputStreamWriter(socket.getOutputStream());??
????????????StringBuffer?sb?=?new?StringBuffer();??
????????????sb.append(“GET?/?HTTP/1.1\r\n“);??
????????????sb.append(“Accept:?image/png?image/svg+xml?image/*;q=0.8?*/*;q=0.5\r\n“);??
????????????sb.append(“X-HttpWatch-RID:?18613-10702\r\n“);??
????????????sb.append(“Referer:?http://www.cnblogs.com/haitao-fan/archive/2013/01/18/2866994.html\r\n“);??
????????????sb.append(“Accept-Language:?zh-CN\r\n“);??
????????????sb.append(“User-Agent:?Mozilla/5.0?(Windows?NT?6.1;?WOW64;?Trident/7.0;?rv:11.0)?like?Gecko\r\n“);??
????????????sb.append(“Accept-Encoding:?gzip?deflate\r\n“);??
????????????sb.append(“Host:?www.iteye.com\r\n“);??
????????????sb.append(“Connection:?Keep-Alive\r\n“);
????????????sb.append(“DNT:?1\r\n“);
????????????//注,這是關鍵的關鍵,忘了這里讓我搞了半個小時。這里一定要一個回車換行,表示消息頭完,不然服務器會等待??
????????????sb.append(“\r\n“);??
????????????osw.write(sb.toString());??
????????????osw.flush();??

????????????//--輸出服務器傳回的消息的頭信息??
????????????InputStream?is?=?socket.getInputStream();
????????????boolean?isGzip?=?false;
????????????//?讀取所有服務器發送過來的請求參數頭部信息??
????????????String?header?=?readHeader(is);
????????????System.out.println(header);
????????????//?返回的數據類型,是否是gzip壓縮的格式
????????????String?acceptEncoding?=?getHeaderValue(header?“Content-Encoding“);
????????????if?(acceptEncoding.startsWith(“gzip“))?{
???????? isGzip?=?true;
???????? }
????????????String?sContLength?=?getHeaderValue(header?“Content-Length“);
????????????int?coentLength?=?isBlank(sContLength)???0?:?Integer.parseInt(sContLength);
????????
????????????String?body;
????????????if?(isGzip)?{
???????????? body?=?readGzipBodyToString(is);
????????????}?else?{
???????????? body?=?readBody(is?coentLength);
????????????}
????????????
????????????//--輸消息的體??
????????????System.out.print(body);??
??
????????????//關閉流??
????????????is.close();
????????????socket.close();
????????????
????????}?catch?(UnknownHostException?e)?{??
????????????e.printStackTrace();??
????????}?catch?(IOException?e)?{??
????????????e.printStackTrace();??
????????}??
????}?

/**
?*?讀取壓縮的消息體,并且轉換為字符串
?*?
?*?@par

評論

共有 條評論