本篇文章小编给大家分享一下HttpClient请求URL字符集转码问题解决方法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。

问题是这样的,用eclipse发送httpclient请求如下没有问题,但是在idea中就返回400,为什么?

package com.vol.timingTasks;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.auth.AuthScope;

import org.apache.http.auth.UsernamePasswordCredentials;

import org.apache.http.client.CredentialsProvider;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.BasicCredentialsProvider;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.impl.client.HttpClientBuilder;

import org.apache.http.util.EntityUtils;

import java.io.IOException;

/**

* 数据抽取测试类

*

* @author xbx

*

*/

public class XBXmain {

private final static String ENCODE = "utf-8";

public static void main(String[] args) throws Exception {

getDataA();

}

/*

* Basic验证

* 用户名:

* 密钥:

*/

public static void getDataA() throws Exception{

HttpResponse httpResponse = null;

HttpClient httpClient = new DefaultHttpClient();

String projectName = "中科洛阳信息产业园项目(一期)";

String url = "http://labour.ztjs.cn/clound/wsForThird/laboursByProjectName/"+projectName ;

HttpGet get = new HttpGet(url);

try {

// 创建HttpClientBuilder

HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();

// 设置BasicAuth

CredentialsProvider provider = new BasicCredentialsProvider();

// Create the authentication scope

AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);

// Create credential pair,在此处填写用户名和密码

UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("", "");

// Inject the credentials

provider.setCredentials(scope, credentials);

// Set the default credentials provider

httpClientBuilder.setDefaultCredentialsProvider(provider);

// HttpClient

CloseableHttpClient closeableHttpClient = httpClientBuilder.build();

httpResponse = closeableHttpClient.execute(get);

HttpEntity httpEntity = httpResponse.getEntity();

String httpResult = EntityUtils.toString(httpEntity);

String httpResult2 = EntityUtils.toString(httpEntity);

} catch (IOException e) {

}

}

}

把 访问地址:http://labour.ztjs.cn/clound/wsForThird/laboursByProjectName/中科洛阳信息产业园项目(一期) 放在谷歌浏览器,然后再复制出来,发现汉字编码格式变了。ok,那就先转换下编码格式再发送请求。 修改后代码如下:

package com.vol.timingTasks;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.auth.AuthScope;

import org.apache.http.auth.UsernamePasswordCredentials;

import org.apache.http.client.CredentialsProvider;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.BasicCredentialsProvider;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.impl.client.HttpClientBuilder;

import org.apache.http.util.EntityUtils;

import java.io.IOException;

/**

* 数据抽取测试类

*

* @author xbx

*

*/

public class XBXmain {

private final static String ENCODE = "utf-8";

public static void main(String[] args) throws Exception {

getDataA();

}

/*

* Basic验证

* 用户名:

* 密钥:

*/

public static void getDataA() throws Exception{

HttpResponse httpResponse = null;

HttpClient httpClient = new DefaultHttpClient();

String projectName = "中科洛阳信息产业园项目(一期)";

String url = "http://labour.ztjs.cn/clound/wsForThird/laboursByProjectName/"+java.net.URLEncoder.encode(projectName, ENCODE);//URL 中文 转码

HttpGet get = new HttpGet(url);

try {

// 创建HttpClientBuilder

HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();

// 设置BasicAuth

CredentialsProvider provider = new BasicCredentialsProvider();

// Create the authentication scope

AuthScope scope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM);

// Create credential pair,在此处填写用户名和密码

UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("", "");

// Inject the credentials

provider.setCredentials(scope, credentials);

// Set the default credentials provider

httpClientBuilder.setDefaultCredentialsProvider(provider);

// HttpClient

CloseableHttpClient closeableHttpClient = httpClientBuilder.build();

httpResponse = closeableHttpClient.execute(get);

HttpEntity httpEntity = httpResponse.getEntity();

String httpResult = EntityUtils.toString(httpEntity);

String httpResult2 = EntityUtils.toString(httpEntity);

} catch (IOException e) {

}

}

}

再试试,请求成功,只需要转下编码:

String url = "http://labour.ztjs.cn/clound/wsForThird/laboursByProjectName/"+java.net.URLEncoder.encode(projectName, ENCODE);//URL 中文 转码

url 转码 java_HttpClient请求URL字符集转码问题解决方法相关推荐

  1. ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)

    Ajax异步同步请求被IE缓存的问题解决方法(get方式) 分类:Javascript| 发布:佚名| 查看: | 发表时间:2014/1/20 折腾了半天,程序中使用jquery的load方法进行请 ...

  2. 获取请求的url java_Java获取此次请求URL以及服务器根路径的方法

    一. 获取此次请求的URL String requestUrl = request.getScheme() //当前链接使用的协议 +"://" + request.getServ ...

  3. http请求 url传递参数

    参数绑定注解 @PathVariable  URL变量 当使用请求URL中的模板变量样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑 ...

  4. java获取微信小程序码和小程序二维码

    一.小程序码和小程序二维码简介 首先,奉上微信官方文档:获取小程序码 - https://developers.weixin.qq.com/miniprogram/dev/framework/open ...

  5. Vue2前端请求API数据跨域问题解决

    Vue2前端请求API数据跨域问题解决方法 前端:Vue2 接口使用:API 问题报错提示: Access to XMLHttpRequest at 'http://localhost:9090/ec ...

  6. java,使用get、post请求url地址

    1 // 转换编码 2 public static String encodeParameters(String parameterValue) 3 throws UnsupportedEncodin ...

  7. jsonp请求url长度过长的替代(ajaxcdr的使用)

    问题描述:跨域使用jsonp时url过长的问题 问题解释: 跨域请求时,若用jsonp请求(详情见:MVC4 Web Api 与 Ajax交互存在的跨域问题总结)jsonp因是请求的script标签, ...

  8. java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法

    本文章来给大家介绍关于jsp get Url请求方式中文乱码问题解决办法,有需要的朋友可参考. jsp中post方式请求一般不会乱码,如果乱码加上这句: 解决办法一 代码如下 复制代码 request ...

  9. 请求url处理java_【脚本写作】Java: HttpURLConnection请求处理

    下文代码不解释,调试提供,仅做参考,http request的相关理论知识,可网上搜索. 一般而言,request请求入参:post需要通过set到attribute,而get则直接放到请求的URL中 ...

  10. java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致

    在url中包含('|''&')这些字符直接用HttpClient请求就会报上述错误, 在网上看了一下解决办法有两种都是将非法字符进行转码再请求 列如:String url=http://bai ...

最新文章

  1. 后退键无效 html,javascript – Cordova – window.history.back()不支持iOS 9中的HTML后退按钮...
  2. 追求极简:Docker镜像构建演化史
  3. ARP的一次请求与应答
  4. Rust 算法排位记 - 插入排序的图示和代码实现
  5. python 识别图形验证码_python爬虫20 | 小帅b教你如何用python识别图片验证码
  6. 18.1---不用加号的加法(CC150)
  7. 通达OA二次开发 小飞鱼工作流开发快捷CRM解决方案
  8. MSM8960 // F200 引导装载程序 (Bootloader) 之研读
  9. 计算机打印机能不能取消正在,打印机怎么取消正在排队打印的任务? 打印机删除打印任务的教程...
  10. 网络状态检测的利器 - ss命令
  11. 乾隆盛世,居然是“饥饿的盛世”?
  12. 图片如何添加水印文字?如何设置照片水印?
  13. Java中Character(类型char)类及类型详解
  14. 毫秒转换为天、小时、分、秒
  15. 前端工程师必须知道的网络知识(一)
  16. 【Chrome】在mac深色主题下,chrome依旧保持浅色风格
  17. 对w10进行系统软件测试,W10专业版电脑显卡故障检测软件的使用方法
  18. jjjjjjjjjjjjjj
  19. 计算机一级都有哪些知识,计算机一级考试试题题型有哪些?
  20. 云同步的便签内容在哪里能找到,换了电脑怎样能找到以前的便签内容

热门文章

  1. 免费下载中国知网、万方学术论文的几种方法(福利合集)
  2. 【图像搜索】基于pytorch官方预训练模型的简易相似图片搜索
  3. 极值点、驻点、拐点的区别和联系
  4. 使用BeautifulSoup爬取百度图片
  5. Sqli-Labs Less1-16关详细讲解
  6. springboot集成jooq异常集合
  7. 淮安颜老师计算机,颜老师_以老师为话题的作文750字_独木帆作文网
  8. iOS中播放音乐和音效
  9. 疫情当头,宅家看剧!微信公众号图文应该这样排版
  10. linux修改文件类型和权限