在android中通过http发送文本文件

时间:2013-11-25 12:24:05

标签: java android http servlets

目前,我从android应用程序向我的servlet发送一个用户名作为参数。现在我想从android应用程序发送文件到我的servlet。有可能吗? 这里是我试图通过Http发送用户名的示例代码。

      try
         {
       URL url = new URL("http:/xx.xxx.xxx.x/sample?user=admin"); // File as parameter 
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
             InputStream in = new BufferedInputStream(urlConnection.getInputStream());
             BufferedReader r = new BufferedReader(new InputStreamReader(in));
             String x = "";
             String total = "";
             int i=0;
             ArrayList<String> content = new ArrayList();
             while((x = r.readLine()) != null)
             {
                         content.add(x);

             }
             in.close();
             r.close();
         }
         catch(Exception e)
         {
             e.printStackTrace();
             Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show();
         }

上面的代码工作正常,如何将存储在SD卡中的文本文件作为参数传递给servlet?。提前感谢。

1 个答案:

答案 0 :(得分:0)

这里有一些代码,但我强烈建议通过POST请求而不是GET请求上传数据:

private void sendFileThroughHTTP(File file) {
    try {
        Uri uri = new Uri.Builder().scheme("http").encodedAuthority("xx.xxx.xxx.x")
                .path("sample")
                .appendQueryParameter("user", "admin")
                .appendQueryParameter("file", fileToString(file))
                .build();
        HttpGet get = new HttpGet(uri.toString());

        HttpClient client = new DefaultHttpClient();
        client.execute(get);
    } catch (ClientProtocolException e) {
        Log.e("SOME_TAG", Log.getStackTraceString(e));
    } catch (IOException e) {
        Log.e("SOME_TAG", Log.getStackTraceString(e));
    }
}

private String fileToString(File file) {
    String resultString = "";
    FileReader fileReader = null;
    if (file != null && file.isFile()) {
        try {
            fileReader = new FileReader(file);
            BufferedReader reader = new BufferedReader(fileReader);
            StringBuilder stringBuilder = new StringBuilder();
            String temp;
            while ((temp = reader.readLine()) != null) {
                stringBuilder.append(temp);
            }
            resultString = stringBuilder.toString();
        } catch (FileNotFoundException e) {
            Log.e("SOME_TAG", Log.getStackTraceString(e));
        } catch (IOException e) {
            Log.e("SOME_TAG", Log.getStackTraceString(e));
        } finally {
            try {
                if (fileReader != null) {
                    fileReader.close();
                }
            } catch (IOException e) {
                Log.e("SOME_TAG", Log.getStackTraceString(e));
            }
        }
    }
    return resultString;
}