问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java调http接口 post方式请求 服务器识别全是乱码 服务器识别utf-8的内容 哪位大神知道怎么解决吗?

发布网友 发布时间:2022-04-25 18:28

我来回答

2个回答

热心网友 时间:2023-10-23 17:19

看下你post的方法,设置下这个

httpURLConnection.setRequestProperty("Charset", "utf-8");

拼接参数时:转一下格式

URLEncoder.encode(String.valueOf(value), "utf-8")


下面是我使用的POST方法,最简单的一种

Map<String, String> params = new HashMap<>(); //参数

HttpURLConnection urlCon = null;
URL urlInstance;
StringBuilder sbResult = new StringBuilder();
try {
urlInstance = new URL(url);
urlCon = (HttpURLConnection) urlInstance.openConnection();
urlCon.setRequestMethod("POST");

urlCon.setDoOutput(true); // 是否可以发送数据到服务器
urlCon.setDoInput(true); // 设置是否读服务端
urlCon.setUseCaches(false); // 设置是否缓存
urlCon.setConnectTimeout(15000);// 设置响应超时
// 固定格式
urlCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlCon.setRequestProperty("Charset", "utf-8");

// 对参数进行处理
String data = "";
if (params != null) {
String value;
Set<String> set = params.keySet();// 获取到所有map的键
for (String string : set) {// 遍历参数,拼接data
value = params.get(string);
data += string + "=" + URLEncoder.encode(String.valueOf(value), "utf-8") + "&";
}
}

urlCon.setRequestProperty("Content-Length", String.valueOf(data.length())); // 设置长度

// 往服务器写入数据
OutputStream out = urlCon.getOutputStream();
out.write(data.getBytes());
out.flush();

// 接收服务器返回的数据
InputStream in = urlCon.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));

String line;// 每一行的数据
while ((line = br.readLine()) != null) {
sbResult.append(line);
}

热心网友 时间:2023-10-23 17:19

/**
 * POST方式请求
 * 
 * @param uri
 *            服务器的uri要用物理IP或域名,不识别localhost或127.0.0.1形式!
 * @param paramMap
 * @param headers
 * @return
 * @throws ClientProtocolException
 * @throws IOException
 */
public static String post(String uri, Map<String, String> paramMap,
Map<String, String> headers) throws ClientProtocolException,
IOException {
HttpPost httpPost = new HttpPost(uri);
if (headers != null) {
for (String key : headers.keySet()) {
httpPost.setHeader(key, headers.get(key));
}
}
List<NameValuePair> params = new ArrayList<NameValuePair>();
if (paramMap != null) {
for (String key : paramMap.keySet()) {
params.add(new BasicNameValuePair(key, paramMap.get(key)));
}
              httpPost.setEntity(new ByteArrayEntity(paramMap.get("reqData").getBytes("UTF-8")));
//httpPost.setEntity(new UrlEncodedFormEntity(params,
//DEFAULT_ENCODING));
}
HttpResponse httpResponse = new DefaultHttpClient().execute(httpPost);
int statusCode;
if ((statusCode = httpResponse.getStatusLine().getStatusCode()) == 200) {
return EntityUtils.toString(httpResponse.getEntity());
}
throw new IOException("status is " + statusCode);
}

public static String post(String uri, String contentType, String content)
throws Exception {
org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();

PostMethod post = new PostMethod(uri);

RequestEntity entity = new StringRequestEntity(content, contentType,DEFAULT_ENCODING);
post.setRequestEntity(entity);

int statusCode = client.executeMethod(post);
if (statusCode == 200) {
return post.getResponseBodyAsString();
}
throw new IOException("status is " + statusCode);
}

你可以设置下他的默认传递代码方式:DEFAULT_ENCODING 为UTF-8

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么药止痒效果好 慕容三藏履历 职业cf电脑配置cf电脑配置要求是什么 玩3a电脑配置要求想玩3a大作需要什么配置 台式电脑哪些可以畅享3a大作想玩3a大作需要什么配置 七彩虹i7-10700台式机 性能强劲 高效静音 小黄鱼游戏台式电脑主机(i7-10700F、16GB、512GB、RTX3070)-适用... 工伤保险记什么科目 在4×4的正方形格纸中,有一个以格点为顶点的△ABC,请你找到点C,使三角... 在4×4方格中, 要求C点在格点上,且以AB为边的△ABC为直角三角形,标出所... xmlHttp.setRequestHeader(&quot;Content-Type&quot;,&quot;application&#47;x-www-form-urlencoded;charset=UTF-8&quot;);求解释 &lt;?php header(&quot;Content-type:text/html;charset=utf-8&quot;); utf8 和 UTF-8 在使用中的区别 写了一个php操作数据库的代码,为什么写了header(&quot;Content-type: text&#47;html;charset=utf-8&quot;);还是报错 thinkphp header(&quot;Content-type: text&#47;html;charset=utf-8&quot;);需要这个代码么?这是php,需要设定html么? 在网页设计中怎么设置浏览器编码为utf-8? 已经设置了header为utf8可是还是乱码怎么办 怎么设置setheader utf-8 PHP文件加了header(&quot;content-type=&quot;text/html&quot;,charset=&quot;utf-8... PHP文件插入header(&quot;Content-type: text/html; charset=utf-8... header(&quot;Content-Type:text/html; charset=utf-8&quot;);等问题! 怎么打印文字 服务号中的 微信小店 如何将单个商品制作成二维码 如何在我的微信公众号里面给别人生成带有他名字的二维码!!! 为什么苹果手机输入id密码总是错误 苹果手机id账号设置错了怎么办 余秋雨作品中的佳句 余秋雨写的诗雪 余秋雨诗集 余秋雨我在等你是散文还是诗歌 128,019,46大写怎么写 128元的大写数字怎样写 128,345,678,910怎么写成大写 10.126.136.84人民币大写怎么写 关于一个数字财务的大写? 15,815,128,439.00怎样写大写金额 有大写字母的,是128a还是128b 1,128,477是多少钱? 相机的128g和128gb有什么区别吗? 12880万元是什么意思,怎么念,大写,谢谢 怎么写,急! 这是code128条形码,但怎么输下的数字,那个8.5和9这间,是乘号还是什么,是乘号怎么输 横幅上的年月用大写还是阿拉伯数字? 1.3亩大写 求解 这个代码怎么写 华为p40分屏怎么调整大小 在肇庆星湖绿道用共享电动单车多少钱一小时? 共享单车是怎么收费的? 为什么我用QQ或者微信登录不了快手 为什么我快手QQ登陆不管是什么都登不上去呢?怎么回事,一直是这个页面...