package com.alipay.tiansuan.solrplugin; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class HdfsSolrRequest { private HttpURLConnection conn; private OutputStream out; private String BOUNDARY = "---------7d4a6d158c9"; // 定义数据分隔线 private byte[] end_data = ("\r\n--" + BOUNDARY + "--\r\n").getBytes();// 定义最后数据分隔线 public HdfsSolrRequest(String solr,String hdfs) throws IOException { String urlstr = solr+"/update/userimport?isdel=false&hdfsfile="+java.net.URLEncoder.encode(hdfs, "utf8")+""; this.init(urlstr); } public HdfsSolrRequest(String solr,Boolean isdel) throws IOException { String urlstr = solr+"/update/userimport?isdel="+Boolean.toString(isdel); this.init(urlstr); } private void init(String urlstr) throws IOException { URL url = new URL(urlstr); conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("charset", "utf-8"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); out = new DataOutputStream(conn.getOutputStream()); StringBuilder sb = new StringBuilder(); sb.append("--"); sb.append(BOUNDARY); sb.append("\r\n"); sb.append("Content-Disposition: form-data;name=\"file"+1+"\";filename=\"1\"\r\n"); sb.append("Content-Type:application/octet-stream\r\n\r\n"); byte[] data = sb.toString().getBytes(); out.write(data); } public void append(String userid) throws IOException { out.write(new String(userid+"\n").getBytes()); } public String complete() throws IOException { out.write(end_data); out.flush(); out.close(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; StringBuffer buff=new StringBuffer(); while ((line = reader.readLine()) != null) { buff.append(line); } reader.close(); return buff.toString(); } }