使用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对象调用第三方接口返回的数据中文乱码
0

8个回答

PostMethod method = new PostMethod("url");

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

httpclient.executeMethod(method);

0

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

0

设置下编码:

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;
0

我的请求代码是这样的

    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();

                返回的数据中文乱码
0

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

0

new bufferreader的时候设置编码格式

0

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

0

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
HTTP请求url返回数据
发送HTTP请求
通过HTTP请求调用第三方接口
通过HTTP请求调用第三方接口 简单的POST方式  //json就是url后带的参数,这里是拼接的方式  String json = "{\"account_key\":\"" + account_key + "\",\"secret_code\":\"" + secret_code+ "\",\"identify_id\":\"" + identify_id + "\",\"us...
关于http请求返回数据中文乱码解决方法
在你的http工具类中 有in = new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));这行代码,注意将,"utf-8"加入到输入流,这样在源头上解决了中文乱码问题,如果你读取完了再 转码,会出现部分乱码问题。转载自:http://blog.csdn.net/u014424628/article/det
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使用httpclient调用第三方接口
java使用httpclient调用第三方接口 HttpClientUtil工具类 package com.fz.util; import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.ht...
JAVA请求url并获取返回数据
方法://parm:请求的url链接 返回的是json字符串 public static String getURLContent(String urlStr) { //请求的url URL url = null; //请求的输入流 BufferedReader in = null; //输入流的缓冲 ...
Java读取Url请求获得返回数据
代码如下:public String urlString(String url) { String res = ""; try { URL urls = new URL(url); HttpURLConnection conn = (HttpURLConnection) urls.openConnection();
java请求第三方接口
java请求第三方接口 直接使用jar包,不需要再一次造轮子 /** 需要导入的jar包 net.dongliu requests 4.18.1 */ package com.utils.httputil; import com.alibaba.fastjson.JSON; import net.dongliu.requests.Requests; import java.nio.ch...
HttpWebRequest请求url返回数据
HttpWebRequest httpReq = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com"); ////创建request请求 httpReq.Method = "get";
java调用url请求,并接收返回数据
public static String sendPost(String url, String param) throws Exception{ PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl =...
HTTP请求接口返回数据
直接上代码 public String getHttpInterface(String path){ BufferedReader in = null; StringBuffer result = null; try { URL url = new URL(path); //打开和url之间的连接 ...
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
java调用http请求
java中调用http请求方法封装,参数为url,method,params。直接调用即可,返回调用返回的数据
WebRequest请求Url中文乱码
出现这种情况需要对请求的URL进行编码转换,如下: string url="..."; Encoding encode = System.Text.Encoding.GetEncoding("gb2312"); url = System.Web.HttpUtility.UrlEncode(url, encode); 转载于:https://www.cnblogs.com...
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请求URL返回JSON
需求: testCase 访问本地的 url,获得返回 url 的 json 数据 1,url 路径 比如访问 http://localhost:8080/spb/result Controller如下 @RestController @RequestMapping("/spb") public class JsonController extends MainController { ...
java http请求 返回结果是json ,转成对象使用
URLConnection connection = null;         try {             connection = new URL("地址...").openConnection();             connection.connect();             InputStream fin = connection.getInputSt
java如何调用第三方接口
这里有第三方接口,RFIDAPI.dll、RFIDAPI.lib、RFIDAPIEXPORT.h
java内部调用第三方接口
package com.c; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpURLConnection; import java.net.URL; /** * @...
使用HttpClient调用第三方接口
最近项目中需要调用第三方的Http接口,这里我用到了HttpClient。 首先我们要搞明白第三方接口中需要我们传递哪些参数、数据,搞明白参数以后我们就可以使用HttpClient调用接口了。 1.调用Post方法。 HttpClient初始化与参数设置 public class HttpClientUtils{ private static final Integer DEFAULT_...
Java调用第三方接口示范
分享一个人工智能教程,零基础入门!http://www.captainbed.net/inner 在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。 使用流程 【1】准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法【分为Get和Post方式的有参和无参调用】...
请求第三方接口
2019独角兽企业重金招聘Python工程师标准>>> ...
Java 怎么调用第三方接口
怎么在Java web 项目中,调用第三方接口?rn说的具体点:就是在项目中,想调用支付宝支付功能,不知道该怎么去调用支付宝支付接口??rn哪位大神能解答一下,谢谢!!!rn
Java项目http请求中文乱码
在java项目中,许多请求都是http请求,tomcat服务器,那么经常会遇到中文乱码的问题,除了常规的设置之外,还需设置一下tomcat的编码格式。 即:tomcat---conf-----server.xml中的 <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20000"   ...
Android,HTTP请求中文乱码
转自:http://www.2cto.com/kf/201207/140479.html
HTTP的GET请求中文乱码
今日写完Controller的代码后,自测发现,参数若是中文,接收到的值为乱码。 最初以为是Spring容器的问题,百度后基本有以下几种解决方法: 1.web.xml中配置 CharacterEncodingFilter 2.把接收的参数转码 name = new String("name".getBytes("ISO-8859-1"), "UTF-8"); 3.在<\mvc:annotat
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"/>
http 请求中的中文乱码
在js中转码 然后在action里面解码。 转码:url= action.do?code=" + encodeURI(encodeURI(“中文“)); 解码:java.net.URLDecoder.decode( form.getCode(), "UTF-8"));
使用 HttpClient 调用第三方接口
private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).setConnectionRequestTimeout(60000).build();try { CloseableHttpClient http...
Java调用第三方接口
1.以阿里的快递查询接口为例 2.查看其中的参数和示例代码 3.前端请求js $.ajax({ type : "GET", contentType : "application/json;charset=utf-8", url : baseurl + "/case...
java 调用第三方接口
1.在配置文件中准备好url和 所需的参数 String param=xxxx; String url =xxx; 2.创建http请求 try { HttpClient httpClient = httpClientBuilder.create().builder(); HttpGet httpGet = new HttpGet(url); HttpResponse respons...
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请求第三方接口遇到的跨域问题
自己项目中遇到的请求第三方接口跨域的问题: 首先项目中引入解决跨域的三个公共包; 包1: package com.jeeplus.modules.zzybaseservice; public class CyzHttpResponse {     protected String responseText;       protected String session;      
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...
使用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调用http请求系列--URLConnection
简介:使用URLConnection实现了调用http请求,该方法不支持调用https请求。https调用方式可查看:HttpURLConnection实现和HttpClient实现1.使用GET方式调用http请求代码: public static String requestHttpGet(String url,String params){ String result =
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合