url 转码 java_HttpClient请求URL字符集转码问题解决方法
本篇文章小编给大家分享一下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字符集转码问题解决方法相关推荐
- ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)
Ajax异步同步请求被IE缓存的问题解决方法(get方式) 分类:Javascript| 发布:佚名| 查看: | 发表时间:2014/1/20 折腾了半天,程序中使用jquery的load方法进行请 ...
- 获取请求的url java_Java获取此次请求URL以及服务器根路径的方法
一. 获取此次请求的URL String requestUrl = request.getScheme() //当前链接使用的协议 +"://" + request.getServ ...
- http请求 url传递参数
参数绑定注解 @PathVariable URL变量 当使用请求URL中的模板变量样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑 ...
- java获取微信小程序码和小程序二维码
一.小程序码和小程序二维码简介 首先,奉上微信官方文档:获取小程序码 - https://developers.weixin.qq.com/miniprogram/dev/framework/open ...
- Vue2前端请求API数据跨域问题解决
Vue2前端请求API数据跨域问题解决方法 前端:Vue2 接口使用:API 问题报错提示: Access to XMLHttpRequest at 'http://localhost:9090/ec ...
- java,使用get、post请求url地址
1 // 转换编码 2 public static String encodeParameters(String parameterValue) 3 throws UnsupportedEncodin ...
- jsonp请求url长度过长的替代(ajaxcdr的使用)
问题描述:跨域使用jsonp时url过长的问题 问题解释: 跨域请求时,若用jsonp请求(详情见:MVC4 Web Api 与 Ajax交互存在的跨域问题总结)jsonp因是请求的script标签, ...
- java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法
本文章来给大家介绍关于jsp get Url请求方式中文乱码问题解决办法,有需要的朋友可参考. jsp中post方式请求一般不会乱码,如果乱码加上这句: 解决办法一 代码如下 复制代码 request ...
- 请求url处理java_【脚本写作】Java: HttpURLConnection请求处理
下文代码不解释,调试提供,仅做参考,http request的相关理论知识,可网上搜索. 一般而言,request请求入参:post需要通过set到attribute,而get则直接放到请求的URL中 ...
- java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致
在url中包含('|''&')这些字符直接用HttpClient请求就会报上述错误, 在网上看了一下解决办法有两种都是将非法字符进行转码再请求 列如:String url=http://bai ...
最新文章
- 后退键无效 html,javascript – Cordova – window.history.back()不支持iOS 9中的HTML后退按钮...
- 追求极简:Docker镜像构建演化史
- ARP的一次请求与应答
- Rust 算法排位记 - 插入排序的图示和代码实现
- python 识别图形验证码_python爬虫20 | 小帅b教你如何用python识别图片验证码
- 18.1---不用加号的加法(CC150)
- 通达OA二次开发 小飞鱼工作流开发快捷CRM解决方案
- MSM8960 // F200 引导装载程序 (Bootloader) 之研读
- 计算机打印机能不能取消正在,打印机怎么取消正在排队打印的任务? 打印机删除打印任务的教程...
- 网络状态检测的利器 - ss命令
- 乾隆盛世,居然是“饥饿的盛世”?
- 图片如何添加水印文字?如何设置照片水印?
- Java中Character(类型char)类及类型详解
- 毫秒转换为天、小时、分、秒
- 前端工程师必须知道的网络知识(一)
- 【Chrome】在mac深色主题下,chrome依旧保持浅色风格
- 对w10进行系统软件测试,W10专业版电脑显卡故障检测软件的使用方法
- jjjjjjjjjjjjjj
- 计算机一级都有哪些知识,计算机一级考试试题题型有哪些?
- 云同步的便签内容在哪里能找到,换了电脑怎样能找到以前的便签内容