首页 > 代码库 > restful服务接口访问乱码 和 505错误
restful服务接口访问乱码 和 505错误
用cxf 发部个rest服务,用浏览器访问和 HttpURLConnection 访问。
1. URL中有中文,浏览器访问正常,HttpURLConnection 失败。
解决: HttpURLConnection 方式需要做兼容处理。
queryParam 传入参数,服务实现方法中要处理,如果是乱码要转换,如果中文直接查询
if (!isChineseChar(queryParam)) { queryParam = new String(queryParam.getBytes("iso8859-1"), "utf-8"); }// 判断中文public static boolean isChineseChar(String str) { boolean temp = false; Pattern p=Pattern.compile("[\u4e00-\u9fa5]"); Matcher m=p.matcher(str); if(m.find()){ temp = true; } return temp; }
2. HttpURLConnection 请求中 参数中如果有 空格,请求则会 505错误
解决: 需要对有空格的参数 做URL编码处理。
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLEncoder;import sun.net.www.protocol.http.HttpURLConnection;import com.alibaba.fastjson.JSONObject;public class SingleTableRestClient { private static final String targetURL = "http://localhost:8080/agd-restful/services/restful/QueryService/queryData/*?queryParam="; public static void main(String[] args) { JSONObject obj = new JSONObject(); obj.put("XM", "匡匡"); obj.put("BIRTHDAY", <span style="color:#FF6666;">getURLEncoder</span>("1988-01-01 00:00:00,1988-12-30 00:00:00")); String urls = targetURL + obj.toString(); requestRestServer(urls); } public static JSONObject requestRestServer(String url) { JSONObject obj = new JSONObject(); try { URL restServiceURL = new URL(url); HttpURLConnection httpConnection = (HttpURLConnection) restServiceURL.openConnection(); httpConnection.setRequestMethod("GET"); httpConnection.setRequestProperty("Accept", "application/json"); httpConnection.setRequestProperty("Accept-Charset", "UTF-8"); httpConnection.setRequestProperty("contentType", "UTF-8"); if (httpConnection.getResponseCode() != 200) { throw new RuntimeException("HTTP GET Request Failed with Error code : " + httpConnection.getResponseCode()); } BufferedReader responseBuffer = new BufferedReader(new InputStreamReader( (httpConnection.getInputStream()),"utf-8")); String output = ""; String result = ""; System.out.println("Output from Server: \n"); while ((output = responseBuffer.readLine()) != null) { //System.out.println(output); result = output; } obj = JSONObject.parseObject(result); System.out.println(obj.toString()); httpConnection.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return obj; } @SuppressWarnings("deprecation") <span style="color:#FF6666;">private static String getURLEncoder(String dest) { return URLEncoder.encode(dest); }</span>}修改后 正常ok
restful服务接口访问乱码 和 505错误
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。