从Java应用程序的命令行调用一个servlet : URL连接 « 网络 « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » 网络 » URL连接 
19. 3. 5. 从Java应用程序的命令行调用一个servlet
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;

public class CounterApp {
  String servletURL;

  String sessionCookie = null;

  public static void main(String args[]) {
    if (args.length == 0) {
      System.out.println("\nServlet URL must be specified");
      return;
    }

    try {
      CounterApp app = new CounterApp(args[0]);
      for (int i = 1; i <= 5; i++) {
        int count = app.getCount();
        System.out.println("Pass " + i + " count=" + count);
      }
    catch (Exception ex) {
      ex.printStackTrace();
    }

  }

  public CounterApp(String url) {
    servletURL = url;
  }

  public int getCount() throws Exception {
    java.net.URL url = new java.net.URL(servletURL);
    java.net.URLConnection con = url.openConnection();
    if (sessionCookie != null) {
      con.setRequestProperty("cookie", sessionCookie);
    }
    con.setUseCaches(false);
    con.setDoOutput(true);
    con.setDoInput(true);
    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
    DataOutputStream out = new DataOutputStream(byteOut);
    out.flush();
    byte buf[] = byteOut.toByteArray();
    con.setRequestProperty("Content-type""application/octet-stream");
    con.setRequestProperty("Content-length""" + buf.length);
    DataOutputStream dataOut = new DataOutputStream(con.getOutputStream());
    dataOut.write(buf);
    dataOut.flush();
    dataOut.close();
    DataInputStream in = new DataInputStream(con.getInputStream());
    int count = in.readInt();
    in.close();
    if (sessionCookie == null) {
      String cookie = con.getHeaderField("set-cookie");
      if (cookie != null) {
        sessionCookie = parseCookie(cookie);
        System.out.println("Setting session ID=" + sessionCookie);
      }
    }

    return count;
  }

  public String parseCookie(String raw) {
    String c = raw;

    if (raw != null) {
      int endIndex = raw.indexOf(";");
      if (endIndex >= 0) {
        c = raw.substring(0, endIndex);
      }
    }

    return c;
  }
}
19. 3. URL连接
19. 3. 1. 协议头
19. 3. 2. 连接InputStream
19. 3. 3. 过去24小时下载文件更新
19. 3. 4. 编码源阅读器
19. 3. 5. 从Java应用程序的命令行调用一个servlet
19. 3. 6. 从URL缓冲流读
19. 3. 7. 使用URL发送POST请求
19. 3. 8. 从网址读GIF或类,然后将其保存在本地
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.