在使用网上一些HttpUtils,请求返回后,有中文,读取时发生乱码,使用
HttpClients
,以下是解决方法。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import com.google.common.collect.Lists; /** * Created by lihengjie on 2016/11/27. */ public class HttpClentT { public static String send(String url) { CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; InputStream is = null; //封装请求参数 List<NameValuePair> params = Lists.newArrayList(); params.add(new BasicNameValuePair("cityEname", "henan")); String str = ""; String result = ""; try { //转换为键值对 str = EntityUtils.toString(new UrlEncodedFormEntity(params, Consts.UTF_8)); System.out.println(str); //创建Get请求 HttpGet httpGet = new HttpGet(url + "?" + str); //执行Get请求, response = httpClient.execute(httpGet); //得到响应体 HttpEntity entity = response.getEntity(); if (entity != null) { is = entity.getContent(); //转换为字节输入流 BufferedReader br = new BufferedReader(new InputStreamReader(is, Consts.UTF_8)); String body = null; while ((body = br.readLine()) != null) { result = body; } } } catch (ParseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { //关闭输入流,释放资源 if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } //消耗实体内容 if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } //关闭相应 丢弃http连接 if (httpClient != null) { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } } }
使用HttpURLConnection,请求结果乱码。
最新推荐文章于 2023-01-12 13:34:09 发布