网络编程 传输工具 加入cookie(需要整改)

package test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;

import com.broadengate.common.Parameter;
import com.ruanko.ke.common.util.KEUtil;

public class HttpTool {
 public static String host = "http://localhost:8080/KoclaExchange";
 public static String key = "shehuizhuyihao";
 
 private List<String> cookieString;

 public String post(URL url, String content)
   throws IOException {
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();

  conn.setRequestProperty("content-type", "text/html");
  conn.setRequestMethod(Parameter.POST);
  conn.setDoInput(true);
  conn.setDoOutput(true);
  conn.setUseCaches(false);

  // Post请求对post的内容进行签名,Get请求对url进行签名
  KEUtil keUtil = new KEUtil(3, 2);
  String signature = keUtil.signature(content.getBytes());
  conn.addRequestProperty("signature", signature);

  // 向服务端写入数据.
  OutputStream outputStream = conn.getOutputStream();
  BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(
    outputStream, Parameter.chartset));
  bWriter.write(content);
  bWriter.flush();
  bWriter.close();

  // 取得服务端返回的数据.
  StringBuffer responseStr = new StringBuffer("");
  InputStream inputStream = conn.getInputStream();
  BufferedReader bReader = new BufferedReader(new InputStreamReader(
    inputStream, Parameter.chartset));
  int c;
  while ((c = bReader.read()) != -1) {
   responseStr.append((char) c);
  }

  conn.disconnect();
  System.out.println("请求地址:" + url);

  return responseStr.toString();
 }

 public String get(URL url) throws IOException {
  //如果还没有通过验证,取得服务端的随机码后进行验证
  if (cookieString == null){
   URL randomCodeURL = new URL(host + "/RandomCodeAction/gen.action");
   HttpURLConnection randomCodeConn = (HttpURLConnection) randomCodeURL.openConnection();
   randomCodeConn.setRequestMethod("GET");
   StringBuffer randomCode = new StringBuffer("");
   InputStream randomInputStream = randomCodeConn.getInputStream();
   BufferedReader bReader = new BufferedReader(new InputStreamReader(randomInputStream, "UTF-8"));
   int c;
   while ((c = bReader.read()) != -1) {
    randomCode.append((char) c);
   }
   String code = DigestUtils.md5Hex(key + randomCode.toString());
   randomCodeConn.disconnect();
   Map<String, List<String>> fields = randomCodeConn.getHeaderFields();
   cookieString = fields.get("Set-Cookie");
   String newURL = url.toString();
   newURL = StringUtils.replaceOnce(newURL, "?", "?code=" + code + "&");
   url = new URL(newURL);
  }
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  conn.setRequestProperty("Cookie", cookieString.get(0));
  conn.setRequestMethod("GET");
  conn.setDoInput(true);
  conn.setDoOutput(true);
  conn.setUseCaches(false);

  // 取得服务端返回的数据.
  StringBuffer responseStr = new StringBuffer("");
  InputStream inputStream = conn.getInputStream();
  BufferedReader bReader = new BufferedReader(new InputStreamReader(
    inputStream, "UTF-8"));

  int c;
  while ((c = bReader.read()) != -1) {
   responseStr.append((char) c);
  }
  conn.disconnect();
  
  System.out.println("请求地址:" + url);
  return responseStr.toString();
 }

 public List<String> getCookieString() {
  return cookieString;
 }

 public void setCookieString(List<String> cookieString) {
  this.cookieString = cookieString;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值