3

Android code

class BirthdayTask extends AsyncTask<String, String, String>{

        @Override
        protected String doInBackground(String... uri) {
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response;
            String responseString = null;
            try {
                System.out.println(uri[0]);
                response = httpclient.execute(new HttpGet(uri[0]));
                StatusLine statusLine = response.getStatusLine();
                if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                    ByteArrayOutputStream out = new ByteArrayOutputStream();
                    response.getEntity().writeTo(out);
                    out.close();
                    responseString = out.toString();
                    System.out.println("responseString"+responseString);
                } else{
                    //Closes the connection.
                    response.getEntity().getContent().close();
                    throw new IOException(statusLine.getReasonPhrase());
                }
            } catch (ClientProtocolException e) {
                //TODO Handle problems..
            } catch (Exception e) {
                e.printStackTrace();
            }
            return responseString;
        }


        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            /* System.out.println(result);
            System.out.println(result);
            System.out.println(result);*/
        }

    }


 @RequestMapping(value="here is my url" ,method=RequestMethod.GET)
        public @ResponseBody String Test(HttpServletRequest req) {

            Gson gson = new Gson();

            Domain domain = (Domain)req.getSession().getAttribute("Domain");
            List<UserProfile> userProfiles = userProfileManager.getUpcomingBirthday(domain.getDomainId(),15);

            return gson.toJson(userProfiles);
        }

Webservice

This is the webservice I am calling from browser its working fine. But when I call from Android then I get a 500 internal server error. But in server logs I see no error.

What is going wrong?

4

3 回答 3

7

每当HTTP 代码以 5 (5xx) 开头时,就意味着服务器出现问题。这与您的代码无关,在 android 客户端,但在服务器端实现。

这是我从浏览器调用的网络服务,它的工作很好....但是当我从 android 调用时,出现 500 内部服务器错误

这可能意味着您从 android 应用程序发送的请求负载必须与您从浏览器发送的请求负载不同。请打印您的请求有效负载并仔细检查所有内容。此外,它还可以帮助您查看请求标头。

于 2019-01-25T07:06:12.807 回答
1

很难给出答案,但我认为当您使用 Android 调用 WS 时会话为空。虽然如果您使用浏览器调用 WS,则可以使用 cookie 或 sessionId 维护会话,但我找不到任何以某种方式处理 cookie 或 sessionId 的代码行。IMO 你不应该依赖会话信息。希望它可以帮助你。

于 2013-11-14T10:52:11.650 回答
0

我建议使用改造而不是 AsyncTask。它将解决 cookie 的问题。

于 2019-01-27T18:59:51.403 回答