引用:https://blog.csdn.net/u010736165/article/details/78899708
百度统计的代码网上很多,但是上面这个哥哥的最好,我也成功了,但是遇到了一点问题,统计地域分布的时候,我发现得到的数据都是乱码(省份),
怎么办呢,网上我去找了一下,解决了,如下:
InputStream读取中文字符并由ByteArrayOutputStream写入
public String getString(){
String str = "";
InputStream in = this.getClass().getResourceAsStream("/res/data.txt");
int c;
ByteArrayOutputStream bais = new ByteArrayOutputStream();
try {
while((c = in.read())!= -1)
{
bais.write(c);
}
byte data[] = bais.toByteArray();
str = new String(data,"utf-8");
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
好了,为了方便,我懂你们的想法。直接看看改改那个小哥哥的类里面的代码,就在下面(修改HttpsUtil 工具类如下就可以了):
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class HttpsUtil {
private static class TrustAnyTrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// TODO Auto-generated method stub
}
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// TODO Auto-generated method stub
}
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
}
private static class TrustAnyHostnameVerifier implements HostnameVerifier {
public boolean verify(String arg0, SSLSession arg1) {
// TODO Auto-generated method stub
return false;
}
}
/**
* post方式请求服务器(https协议)
*
* @param url
* 请求地址
* @param content
* 参数
* @param charset
* 编码
* @return
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
* @throws IOException
*/
public static String post(String url, String content, String charset)
throws NoSuchAlgorithmException, KeyManagementException,
IOException {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
new java.security.SecureRandom());
URL console = new URL(url);
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.setDoOutput(true);
conn.connect();
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.write(content.getBytes(charset));
// 刷新、关闭
out.flush();
out.close();
InputStream is = conn.getInputStream();
if (is != null) {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ((len = is.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
byte data[] = outStream.toByteArray();
String str = new String(data,charset); //解决输出中文乱码
outStream.close();
is.close();
return str.toString();
}
return null;
}
}