Spring MVC - 在@ResponseBody中调用方法

时间:2016-04-24 00:29:43

标签: spring spring-mvc

我是Spring MVC初学者,我想在@ResponseBody中休息。我的外部节点服务器对该方法没有反应。我的服务器控制台中没有关于请求的消息。没有UserRest它可以工作。我很感激你的帮助

  @Controller
  public class AjaxController {

@RequestMapping(value= "user", method=RequestMethod.GET)
public @ResponseBody String login (){ 
   UserRest ur = new UserRest();
   Response r = ur.getUserName(2);
   Gson gs = new Gson();
   String str = gs.toJson(r);
   return str;
}
 }

Response getUserName(int userID){
    Response response = new Response();
        StringBuilder total = new StringBuilder();
        try {
            URL url = new URL(Properties.SERVER_SECURE_URL + "users/" + userID);
            urlConnection = (HttpsURLConnection) url.openConnection();

            urlConnection.setDoOutput(false);
            urlConnection.setDoInput(true);
            urlConnection.setRequestMethod("GET");
            urlConnection.setRequestProperty("Authorization","1Strajk");


            response.setMessageCode(urlConnection.getResponseCode());
            if(response.getMessageCode()==Response.MESSAGE_OK) {
                InputStream in = urlConnection.getInputStream();

                BufferedReader r = new BufferedReader(new InputStreamReader(in));

                String line;
                while ((line = r.readLine()) != null) {
                    total.append(line);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(!total.toString().isEmpty()){
                response.setObject(total.toString());
            }
            urlConnection.disconnect();
        }
        return response;
}

1 个答案:

答案 0 :(得分:0)

我解决了。我忘记了SSL连接。在打电话给休息之前我打电话给那个方法:

public class SSLUtils {
public static void trustEveryone() {
    try {
        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });
        SSLContext context = SSLContext.getInstance("TLS");
        context.init(null, new X509TrustManager[]{new X509TrustManager(){
            public void checkClientTrusted(X509Certificate[] chain,
                                           String authType) throws CertificateException {}
            public void checkServerTrusted(X509Certificate[] chain,
                                           String authType) throws CertificateException {}
            public X509Certificate[] getAcceptedIssuers() {
                return new X509Certificate[0];
            }}}, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(
                context.getSocketFactory());
    } catch (Exception e) { // should never happen
        e.printStackTrace();
    }
}
}