first commit
This commit is contained in:
92
src/main/java/com/peanut/common/utils/ConnUtil.java
Normal file
92
src/main/java/com/peanut/common/utils/ConnUtil.java
Normal file
@@ -0,0 +1,92 @@
|
||||
package com.peanut.common.utils;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
|
||||
public class ConnUtil {
|
||||
/**
|
||||
* UrlEncode, UTF-8 编码
|
||||
*
|
||||
* @param str
|
||||
* 原始字符串
|
||||
* @return
|
||||
*/
|
||||
public static String urlEncode(String str) {
|
||||
String result = null;
|
||||
try {
|
||||
result = URLEncoder.encode(str, "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从HttpURLConnection 获取返回的字符串
|
||||
*
|
||||
* @param conn
|
||||
* @return
|
||||
* @throws IOException
|
||||
* @throws DemoException
|
||||
*/
|
||||
public static String getResponseString(HttpURLConnection conn) throws IOException, DemoException {
|
||||
return new String(getResponseBytes(conn));
|
||||
}
|
||||
|
||||
/**
|
||||
* 从HttpURLConnection 获取返回的bytes 注意 HttpURLConnection自身问题,
|
||||
* 400类错误,会直接抛出异常。不能获取conn.getInputStream();
|
||||
*
|
||||
* @param conn
|
||||
* @return
|
||||
* @throws IOException
|
||||
* http请求错误
|
||||
* @throws DemoException
|
||||
* http 的状态码不是 200
|
||||
*/
|
||||
public static byte[] getResponseBytes(HttpURLConnection conn) throws IOException, DemoException {
|
||||
int responseCode = conn.getResponseCode();
|
||||
if (responseCode != 200) {
|
||||
System.err.println("http 请求返回的状态码错误,期望200, 当前是 " + responseCode);
|
||||
if (responseCode == 401) {
|
||||
System.err.println("可能是appkey appSecret 填错");
|
||||
}
|
||||
throw new DemoException("http response code is" + responseCode);
|
||||
}
|
||||
|
||||
InputStream inputStream = conn.getInputStream();
|
||||
byte[] result = getInputStreamContent(inputStream);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将InputStream内的内容全部读取,作为bytes返回
|
||||
*
|
||||
* @param is
|
||||
* @return
|
||||
* @throws IOException
|
||||
* @see InputStream.read()
|
||||
*/
|
||||
public static byte[] getInputStreamContent(InputStream is) throws IOException {
|
||||
byte[] b = new byte[1024];
|
||||
// 定义一个输出流存储接收到的数据
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
// 开始接收数据
|
||||
int len = 0;
|
||||
while (true) {
|
||||
len = is.read(b);
|
||||
if (len == -1) {
|
||||
// 数据读完
|
||||
break;
|
||||
}
|
||||
byteArrayOutputStream.write(b, 0, len);
|
||||
}
|
||||
return byteArrayOutputStream.toByteArray();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user