【问题标题】:Retrieve get response with Android使用 Android 获取响应
【发布时间】:2015-03-21 06:45:02
【问题描述】:

我有一个应用程序 android,它在 AsyncTask 中向 servlet 发出 2 get 请求。 我想检索一个包含简单响应的字符串。 这是我的 AsyncTask:

protected String doInBackground(Void... params) {
        return uploadFile();
    }

    @SuppressWarnings("deprecation")
    private String uploadFile() {
        String responseString = null;
        String responseStr = null;

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(Config.FILE_UPLOAD_URL);

        try {
            AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
                    new ProgressListener() {

                        @Override
                        public void transferred(long num) {
                            publishProgress((int) ((num / (float) totalSize) * 100));
                        }
                    });

            File sourceFile = new File(filePath);

            // Adding file data to http body
            entity.addPart("image", new FileBody(sourceFile));


            totalSize = entity.getContentLength();
            httppost.setEntity(entity);

            // Making server call
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity r_entity = response.getEntity();

            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == 200) {
                // Server response
                responseString = EntityUtils.toString(r_entity);


                try {

                    HttpClient client = new DefaultHttpClient();  
                    URI getURL = new URI("http://192.168.1.101:8080/MusaServlet?collection="+collection+"&name="+filename);
                    Log.i("QUERY",getURL.getQuery());
                    HttpGet get = new HttpGet(getURL);
                    HttpResponse responseGet = client.execute(get);  
                    HttpEntity resEntityGet = responseGet.getEntity();  
                    if (resEntityGet != null) {  
                                Log.i("GET RESPONSE",EntityUtils.toString(resEntityGet));
                            }
                    responseStr = EntityUtils.toString(responseGet.getEntity());

                } catch (Exception e) {
                    e.printStackTrace();
                }

            } else {
                responseString = "Error occurred! Http Status Code: "
                        + statusCode;
            }

        } catch (ClientProtocolException e) {
            responseString = e.toString();
        } catch (IOException e) {
            responseString = e.toString();
        }

        return responseStr;

    }

servlet 代码是:

        PrintWriter out = response.getWriter();
        out.println("HELLO STUPID APP!");

但是应用显示的对话框是空的!没话说! 有什么问题吗?

谢谢

【问题讨论】:

  • 你在 logcat 中得到Log.i("GET RESPONSE",EntityUtils.toString(resEntityGet)); 吗?
  • 如何签入logcat?
  • 使用DDMS或添加断点调试uploadFile方法
  • 我已在答案中发布了我的 logcat。看这里。没有得到回应

标签: java android servlets get response


【解决方案1】:

首先检查您的 GET 请求状态代码为

responseGet.getStatusLine().getStatusCode();

如果给出数字 200 则 GET 成功。
现在如果是 200 那么你会得到你通过以下代码发送的响应

 HttpEntity resEntityGet = responseGet.getEntity();

然后

 String result;
 if(resEntityGet !=null ){
     result=   EntityUtils.toString(resEntityGet);
 }

现在最重要的是一旦你执行responseGet.getEntity(),GET 响应的数据将被传递给变量.. 你分配.. 稍后调用responseGet.getEntity() 将始终返回空......

这可能是您在对话中得到空响应的原因

【讨论】:

    【解决方案2】:

    编辑: 好的,我已经修改了我的代码并使用了 logcat 我确定 responseCode 不是 200。 现在有什么问题? -.-”

    【讨论】:

      猜你喜欢
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2019-03-27
      相关资源
      最近更新 更多