赞
踩
用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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。