java - 使用 Android 检索响应

标签 java android servlets get response

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

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!");

但是应用程序显示的对话框是空的!无话可说! 大家有什么问题吗?

谢谢

最佳答案

首先检查您的 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() 将始终返回空...

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

关于java - 使用 Android 检索响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28089391/

相关文章:

java - 无法在 jframe 内的 jscrollpane 中添加图像

java - 如何设置 JTable 列和行的颜色?

android - 如何在每个 ListView 项目中显示进度条?

java - 从servlet打印多行查询输出到jsp///

JAVA 在将其添加到 keystore 后要求信任 SSL 证书

java - 调节 java 流的过滤器

java - PECS 不适用于具有接口(interface)的返回类型

java - 实现相同接口(interface)的接口(interface)内的内部类,我们通过这个实现什么?

android - 如何根据方向更改屏幕布局?

java - 保护 REST API 的最佳方式是什么?