【问题标题】:Communication between android and servletandroid和servlet之间的通信
【发布时间】:2012-03-17 15:00:24
【问题描述】:

我制作了用于从 html 存储文件的 servlet..

是否可以使用该 servlet 从 android 代码中保存我的文件..

我的 servlet 跟随

 public class UploadImage extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    System.out.println("request: "+request);
    if (!isMultipart) {
        System.out.println("File Not Uploaded");
    } else {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List items = null;

        try {
            items = upload.parseRequest(request);
            System.out.println("items: "+items);
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
        Iterator itr = items.iterator();
        while (itr.hasNext()) {
            FileItem item = (FileItem) itr.next();
            if (item.isFormField()){
                String name = item.getFieldName();
                System.out.println("name: "+name);
                String value = item.getString();
                System.out.println("value: "+value);
            } else {
                try {
                    String itemName = item.getName();
                    Random generator = new Random();
                    int r = Math.abs(generator.nextInt());

                    String reg = "[.*]";
                    String replacingtext = "";
                    System.out.println("Text before replacing is:-" + itemName);
                    Pattern pattern = Pattern.compile(reg);
                    Matcher matcher = pattern.matcher(itemName);
                    StringBuffer buffer = new StringBuffer();

                    while (matcher.find()) {
                        matcher.appendReplacement(buffer, replacingtext);
                    }
                    int IndexOf = itemName.indexOf("."); 
                    String domainName = itemName.substring(IndexOf);
                    System.out.println("domainName: "+domainName);

                    String finalimage = buffer.toString()+"_"+r+domainName;
                    finalimage=finalimage.substring(finalimage.lastIndexOf("\\")+1,finalimage.length());

                    System.out.println("Final Image==="+finalimage);






                    File savedFile = new File(finalimage);
                    item.write(savedFile);
                    FileInputStream in=new FileInputStream(savedFile);


                    Connection conn = null;
                    String url = "jdbc:mysql://localhost:3306/";
                    String dbName = "test";
                    String driver = "com.mysql.jdbc.Driver";
                    String username = "root"; 
                    String userPassword = "admin";
                    String strQuery = null;
                    String strQuery1 = null;
                    String imgLen="";

                    try {
                        System.out.println("itemName::::: "+itemName);
                        Class.forName(driver).newInstance();
                        conn = DriverManager.getConnection(url+dbName,username,userPassword);


                        PreparedStatement stmt=conn.prepareStatement("insert into testimage(image) values(?)");


                        stmt.setBinaryStream(1,in,in.available()+2);
                        stmt.executeUpdate();
                        stmt.close(); 


                        System.out.println("Query Executed Successfully++++++++++++++");
                        out.println("image inserted successfully");
                        out.println("</body>");
                        out.println("</html>");                     
                    } catch (Exception e) {
                        System.out.println(e.getMessage());
                    } finally {
                        conn.close();
                    }       
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

}

我有这样的想法..但不确定。

HttpURLConnection  conn = (HttpURLConnection) url.openConnection(); 

            conn.setDoInput(true); 

            conn.setDoOutput(true); 

            conn.setUseCaches(false); 

            conn.setRequestMethod("POST");

            conn.setRequestProperty("Connection", "Keep-Alive");
                conn.setRequestProperty("ENCTYPE", "multipart/form-data");
            conn.setRequestProperty("Content-Type",
                "multipart/form-data;boundary=" + boundary);

什么 jar 或者做这个任务

你的回复对我很有帮助..

【问题讨论】:

  • 您的想法是正确的,您可以使用您的代码。但是你想从我们这里得到什么答案

标签: java android servlets


【解决方案1】:

customhttpclient.java 可在此链接customhttpclient.java 获得

在您的项目中使用它,然后通过以下方式从 servlet 访问

ArrayList<NameValuePair> postdates = new ArrayList<NameValuePair>();
            postdates.add(new BasicNameValuePair("accountno",selected_accountno));
            postdates.add(new BasicNameValuePair("fromdate", fromdate));
            postdates.add(new BasicNameValuePair("todate", todate));

            try {

            String response = CustomHttpClient.executeHttpPost("http://"+server_ip+":8080/AndroidResponse/ICICIGetAccountStatement", postdates);
            resp = response.toString();
            resp = resp.replaceAll("\\s+","");
            //System.out.println("Resp from Server: "+ resp);

            } catch (Exception e) {
            //System.out.println("Error at after server response :"+e.toString());
            }

【讨论】:

    【解决方案2】:

    您可以使用 apache Http Components 和 mime4j 将 multipart 发送到您的 servlet 看这个例子

            InputStream inputStream = this.getAssets().open("image.png");
    
            HttpClient client = new DefaultHttpClient();
            HttpPost request = new HttpPost("http://10.10.10.144:8080/TestingApacheHttpClients/PostGetServletTest");
    
    
            byte[] data = IOUtils.toByteArray(inputStream);//from apache commons IO
    
            InputStreamBody isb = new InputStreamBody(new ByteArrayInputStream(data), "uploadedFile");
            StringBody sb1 = new StringBody("Nammaeri 101");
            StringBody sb2 = new StringBody("this is tamara");
    
            MultipartEntity multipartEntity = new MultipartEntity();
    
            multipartEntity.addPart("fileUploaded", isb);
            multipartEntity.addPart("parmaeter1", sb1);
            multipartEntity.addPart("parameter2", sb2);
    
            request.setEntity(multipartEntity);
                HttpResponse response = client.execute(request);
    

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      相关资源
      最近更新 更多