使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码 10C

URL url = new URL("http://apis.5118.com/morerank/baidupc");
// 将url 以 open方法返回的urlConnection 连接强转为HttpURLConnection连接 (标识一个url所引用的远程对象连接)
// 此时cnnection只是为一个连接对象,待连接中
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数)
connection.setDoOutput(true);
// 设置连接输入流为true
connection.setDoInput(true);
// 设置请求方式为post
connection.setRequestMethod("POST");
connection.setRequestProperty("Charsert", "UTF-8"); //设置请求编码
// post请求缓存设为false
connection.setUseCaches(false);
// 设置该HttpURLConnection实例是否自动执行重定向
connection.setInstanceFollowRedirects(true);
// 设置请求头里面的各个属性 (以下为设置内容的类型,设置为经过urlEncoded编码过的from参数)
// application/x-javascript text/xml->xml数据 application/x-javascript->json对象 application/x-www-form-urlencoded->表单数据
// ;charset=utf-8 必须要,不然妙兜那边会出现乱码【★★★★★】
//addRequestProperty添加相同的key不会覆盖,如果相同,内容会以{name1,name2}
connection.addRequestProperty("from", "sfzh"); //来源哪个系统
//setRequestProperty添加相同的key会覆盖value信息
//setRequestProperty方法,如果key存在,则覆盖;不存在,直接添加。
//addRequestProperty方法,不管key存在不存在,直接添加。

connection.setRequestProperty("Authorization", " APIKEY D9FD7C014E8E4367B2891EF5B4B493");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");


 // 建立连接 (请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行)
 connection.connect();
 // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)
 DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
 // 格式 parm = aaa=111&bbb=222&ccc=333&ddd=444
 String parm = "taskid="+taskid;
 System.out.println("传递参数:" + parm);
 // 将参数输出到连接
 dataout.writeBytes(parm);
 // 输出完成后刷新并关闭流
 dataout.flush();
 dataout.close(); // 重要且易忽略步骤 (关闭流,切记!)
 //System.out.println(connection.getResponseCode());
 // 连接发起请求,处理服务器响应  (从连接获取到输入流并包装为bufferedReader)
 BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
 String line;
 StringBuilder sb = new StringBuilder(); // 用来存储响应数据

 // 循环读取流,若不到结尾处
 while ((line = bf.readLine()) != null) {
     //sb.append(bf.readLine());
    String lin=new String(line.getBytes(), "utf-8");
     sb.append(lin);
 }
 bf.close();    // 重要且易忽略步骤 (关闭流,切记!)
 connection.disconnect(); // 销毁连接
  return sb.toString();

            返回的数据中文乱码使用java的Http请求里的Url对象调用第三方接口返回的数据中文乱码

8个回答

PostMethod method = new PostMethod("url");

method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; text/html; charset=UTF-8");

httpclient.executeMethod(method);

设置数据的编码是utf-8, BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
https://blog.csdn.net/Java_WGE/article/details/79022920

设置下编码:

DefaultHttpClient client = new DefaultHttpClient();//获取DefaultHttpClient请求
HttpPost httpost = new HttpPost(url);//HttpPost将使用Post方式发送请求URL
JSONObject jsonObject = null;
httpost.setEntity(new StringEntity(outStr,"UTF-8"));//使用setEntity方法,将我们传进来的参数放入请求中
HttpResponse response = client.execute(httpost);//使用HttpResponse接收client执行httpost的结果
String result = EntityUtils.toString(response.getEntity(),"UTF-8");//HttpEntity转为字符串类型
jsonObject = JSONObject.fromObject(result);//字符串类型转为JSON类型
return jsonObject;

我的请求代码是这样的

    URL url = new URL("http://apis.5118.com/morerank/baidupc");
    // 将url 以 open方法返回的urlConnection  连接强转为HttpURLConnection连接  (标识一个url所引用的远程对象连接)
    // 此时cnnection只是为一个连接对象,待连接中
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数)
    connection.setDoOutput(true);
    // 设置连接输入流为true
    connection.setDoInput(true);
    // 设置请求方式为post
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Charsert", "UTF-8"); //设置请求编码
    // post请求缓存设为false
    connection.setUseCaches(false);
    // 设置该HttpURLConnection实例是否自动执行重定向
    connection.setInstanceFollowRedirects(true);
    // 设置请求头里面的各个属性 (以下为设置内容的类型,设置为经过urlEncoded编码过的from参数)
    // application/x-javascript text/xml->xml数据 application/x-javascript->json对象 application/x-www-form-urlencoded->表单数据
    // ;charset=utf-8 必须要,不然妙兜那边会出现乱码【★★★★★】
    //addRequestProperty添加相同的key不会覆盖,如果相同,内容会以{name1,name2}
    connection.addRequestProperty("from", "sfzh");  //来源哪个系统
    //setRequestProperty添加相同的key会覆盖value信息
    //setRequestProperty方法,如果key存在,则覆盖;不存在,直接添加。
    //addRequestProperty方法,不管key存在不存在,直接添加。

    connection.setRequestProperty("Authorization", " APIKEY D9FD7C014E8E4367B2891EF5B4B493");
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");


     // 建立连接 (请求未开始,直到connection.getInputStream()方法调用时才发起,以上各个参数设置需在此方法之前进行)
     connection.connect();
     // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)
     DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
     // 格式 parm = aaa=111&bbb=222&ccc=333&ddd=444
     String parm = "taskid="+taskid;
     System.out.println("传递参数:" + parm);
     // 将参数输出到连接
     dataout.writeBytes(parm);
     // 输出完成后刷新并关闭流
     dataout.flush();
     dataout.close(); // 重要且易忽略步骤 (关闭流,切记!)
     //System.out.println(connection.getResponseCode());
     // 连接发起请求,处理服务器响应  (从连接获取到输入流并包装为bufferedReader)
     BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
     String line;
     StringBuilder sb = new StringBuilder(); // 用来存储响应数据

     // 循环读取流,若不到结尾处
     while ((line = bf.readLine()) != null) {
         //sb.append(bf.readLine());
        String lin=new String(line.getBytes(), "utf-8");
         sb.append(lin);
     }
     bf.close();    // 重要且易忽略步骤 (关闭流,切记!)
     connection.disconnect(); // 销毁连接
      return sb.toString();

                返回的数据中文乱码

他那边返回的数据确定没问题吗

new bufferreader的时候设置编码格式

建议使用spring的restTemplate,底层实现配置为apcahe httpclient,简洁方便,定位问题更轻松!

服务器的编码格式是什么?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
HTTP请求url返回数据
发送HTTP请求
HTTP请求第三方接口
// 创建一个httpClient         CloseableHttpClient client = HttpClients.createDefault();         // 设置url         String url = "xxxx";         // 新建一个post请求         HttpPost post = new HttpPost(url);      ...
http 简单调用第三方接口
仅做记录,注意post请求乱码问题~~ package com.tianan.delivery; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http
对接第三方接口,POST请求获取返回数据
接口数据 处理 主要看sign签名的规则 $params = $this->getRequest()->getPost(); //客户号码 //客户电话 $from_number = $params['tel'] = '13888888888'; //中继号码 $to_number = '021123...
请求第三方接口返回json格式数据的解析
HttpClient httpClient = new HttpClient(); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UT
java请求第三方接口
部署到客户服务器时遇到这个问题,请求第三方接口的方法没用了
Java读取Url请求获得返回数据
代码如下:public String urlString(String url) { String res = ""; try { URL urls = new URL(url); HttpURLConnection conn = (HttpURLConnection) urls.openConnection();
JAVA请求url并获取返回数据
方法://parm:请求的url链接 返回的是json字符串 public static String getURLContent(String urlStr) { //请求的url URL url = null; //请求的输入流 BufferedReader in = null; //输入流的缓冲 ...
java调用url请求,并接收返回数据
public static String sendPost(String url, String param) throws Exception{ PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl =...
URL请求中文乱码的解决
分成两个部分,首先在请求端进行二次转码: [code="java"]encodeURI(encodeURI("中文"));[/code] 然后在服务器端使用: [code="java"]java.net.URLDecoder.decode(request.getParameter("name"),"UTF-8");[/code] 来源:[url]http://blog.csdn.net...
url请求中文乱码
http://192.168.2.209:8081/AnimeInterface/Interface.do?msg=101113100305244你们好啊rn这是url请求的地址,我这样解析出来rnElement keyword = msgElet.getChild("keyword");rn if (keyword!=null) rn keywordval = keyword.getValue();rnrnkeywordval乱码请问怎样解决???
Java调用Http请求
package test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL;publi
HTTP请求接口返回数据
直接上代码 public String getHttpInterface(String path){ BufferedReader in = null; StringBuffer result = null; try { URL url = new URL(path); //打开和url之间的连接 ...
java请求URL返回JSON
需求: testCase 访问本地的 url,获得返回 url 的 json 数据 1,url 路径 比如访问 http://localhost:8080/spb/result Controller如下 @RestController @RequestMapping("/spb") public class JsonController extends MainController { ...
Java项目http请求中文乱码
在java项目中,许多请求都是http请求,tomcat服务器,那么经常会遇到中文乱码的问题,除了常规的设置之外,还需设置一下tomcat的编码格式。 即:tomcat---conf-----server.xml中的 <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"   ...
HTTP的GET请求中文乱码
今日写完Controller的代码后,自测发现,参数若是中文,接收到的值为乱码。 最初以为是Spring容器的问题,百度后基本有以下几种解决方法: 1.web.xml中配置 CharacterEncodingFilter 2.把接收的参数转码 name = new String("name".getBytes("ISO-8859-1"), "UTF-8"); 3.在<\mvc:annotat
Android,HTTP请求中文乱码
Android,HTTP请求中文乱码
http 请求中文乱码
1、<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />   <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
java如何调用第三方接口
这里有第三方接口,RFIDAPI.dll、RFIDAPI.lib、RFIDAPIEXPORT.h
Java调用第三方接口示范
分享一个人工智能教程,零基础入门!http://www.captainbed.net/inner 在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。 使用流程 【1】准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法【分为Get和Post方式的有参和无参调用】...
Java 怎么调用第三方接口
怎么在Java web 项目中,调用第三方接口?rn说的具体点:就是在项目中,想调用支付宝支付功能,不知道该怎么去调用支付宝支付接口??rn哪位大神能解答一下,谢谢!!!rn
java 调用第三方接口
1.在配置文件中准备好url和 所需的参数 String param=xxxx; String url =xxx; 2.创建http请求 try { HttpClient httpClient = httpClientBuilder.create().builder(); HttpGet httpGet = new HttpGet(url); HttpResponse respons...
java请求第三方接口遇到的跨域问题
自己项目中遇到的请求第三方接口跨域的问题: 首先项目中引入解决跨域的三个公共包; 包1: package com.jeeplus.modules.zzybaseservice; public class CyzHttpResponse {     protected String responseText;       protected String session;      
PHP 请求第三方接口使用静态类
基于thinkphp使用静态类实现接口调用 实现例子,只有实现思路,具体代码不方便贴 静态类: BaseModel.php &amp;lt;?php /** * Created by PhpStorm. * User: sft * Date: 2018/11/05 * Time: 11:06 */ namespace app\lib\hotel; use think\Model; use t...
使用java调用http请求系列--URLConnection
简介:使用URLConnection实现了调用http请求,该方法不支持调用https请求。https调用方式可查看:HttpURLConnection实现和HttpClient实现1.使用GET方式调用http请求代码: public static String requestHttpGet(String url,String params){ String result =
使用java调用http请求系列--HttpClient
简介:该工具类使用HttpClient实现了调用http请求和支持https的调用方式。1.使用HttpClient实现调用http和https请求: import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; impo
java调用第三方接口获取(保存)数据
后台java获取第三方接口数据: import org.springframework.web.client.RestTemplate; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.type.TypeReference; import org.codehaus.jackson.map.ObjectM...
Linux里http请求样例url
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \   -H 'Content-Type: application/json' \   -d '  {&quot;msgtype&quot;: &quot;text&quot;,     &quot;text&quot;: {        &quot;content&quot;: &quot;我就是我, 是不一样的烟火&quot;     }  }'...
URL及HTTP请求过程
看过老外的一篇文章《What really happens when you navigate to a URL》写的很好,通俗易懂。这对网站的规划、前端优化,都有很强的指导意义。 节选一点: As a software developer, you certainly have a high-level picture of how web apps work and what kind...
解决get请求url中文乱码
来自页面的一个get请求: window.location.href = getContextPath()+&quot;/manage/user/detail?name=&quot;+encodeURI(encodeURI(&quot;小明&quot;)); 服务器端: String name = request.getParameter(&quot;name&quot;); orgname = URLDecoder.decode(name,&quot;UTF...
Java http请求调用服务
最近一直在做算法模型等等,好久不碰系统开发这套东西,顶多自己做个ETL写个spark,正巧自己准备数据的过程中需要调用服务获得一批数据,难得的非常有趣,代码极其基础简单,记录下来也不错import org.codehaus.jettison.json.JSONObject;import java.io.*; import java.net.URL; import java.net.URLConnec
URL请求返回byte
// 打开和URL之间的连接 URLConnection connection = new URL(url).openConnection(); // 设置通用的请求属性 connection.setRequestProperty(“accept”, “/“); connection.setReq
HTTP跨域调用-传入URL就直接返回回来数据
方法有点多,我自己都看不下去了··· 只记得以前调用过 有兴趣的TX可以仔细研究研究 #region-------------------HTTP跨域调用,传入URL就直接返回回来数据。有单独的类---------     protected CookieContainer cookies = new CookieContainer();     protected Random _rand
HTTP POST请求中文乱码问题解决
先上代码 public static String sendUrl(String urlString, String pram,String readCharset ) { StringBuffer sb = new StringBuffer(); DefaultHttpClient httpclient = new DefaultHttpClient(); BufferedReader
5 Http请求中文乱码处理
Java 乱码分很多种,这里主要研究解决http请求中出现乱码的情况。 http请求出现中文乱码的主要原因:发送方与接收方编码不一致,服务器默认支持的编码与web应用不一致,如:tomcat 是国外程序员开发的,页面默认编码为ISO-8859-1,而我们很多中文浏览器默认的编码为:UTF-8,如果不作处理,从浏览器发送中文数据发送给web应用就会出现乱码。 http请求出现中文乱码
如何抓取微信商城的请求url和返回数据
I.为何有此需求 有时由于某种需要需看下某微信商城的售卖货品的设计情况,这就需要看查看下该网站的请求url及返回的数据。首先可以通过微信商 城右上角的按钮在手机浏览器中打开,在地址栏中可以看到其请求url。但是有的网站设置为仅仅可以在微信中浏览,通过手机浏览器 中浏览会受到限制,访问不了商品列表页,更别提分析相应的url请求返回的商品数据了。目前用的比较多的是用手机连接电脑的无线 网,通过
JAVA http请求接口数据
本次以访问百度地图服务API 为例   编写访问程序  一、解析url 方法  把返回数据 封装成StringBuffer 字符串 public static StringBuffer httpsRequest(String requestUrl, String requestMethod, String output) throws IOException,
关于http请求的返回
http请求的response会返回三个元素。 1,status 即httpstatus 常见的有200,201 2,head 即httpheader ,常见的包含content-type 3, responseBody 返回的主体内容,常见的包含list,object和string   修改http返回status的方法有两种 1.response.setStatus(HttpSt...
http请求返回404
[code=java]rnrn@Controllerrn@RequestMapping("/infopublish")rnpublic class hello rn rn @RequestMapping(value="/addsubscribe",method=RequestMethod.GET,headers="Accept=text/plain")rn public @ResponseBody String AddSubscribe(@RequestParam String userInfo)rn return "add subscribe successed";rn rnrn @RequestMapping(value="/getsubscribeinfo",method=RequestMethod.GET,headers="Accept=text/plain")rn public @ResponseBody String GetSubscribeInfo(@RequestParam String userInfo)rn return "get subscribeinfo successed";rn rnrnrn[/code]rnrn我在一个controller中写了2个方法,调用的时候分别用下面两个地址。第一个地址能成功返回字符串,第二个却返回404rnlocalhost:8080/GJAQ_service/infopublish/addsubscribe?userInfo=haharnlocalhost:8080/GJAQ_service/infopublish/getsubscribeinfo?userInfo=haharnrn并且第二个返回404后,再调用第一个也是404,请问这个是什么回事啊?
post请求返回json中文乱码
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 ...
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制