标签:
用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; }
解决: 需要对有空格的参数 做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
标签:
原文地址:http://blog.csdn.net/kuanghongjiang/article/details/43452581