现在我正在写一个小东西
直接用一个程序向一个应用发送一个 HTTPREQUEST 
然后接收HTTPRESPONSE过程中不用浏览器请大家给点指导意见%%%%%

解决方案 »

  1.   

    如果是简单的请求,可以使用 java.net.URLConnection。如果是比较复杂的请求使用 Apache HttpComponent 会更好一些。
      

  2.   

    不知道你发出的是 GET 请求,还是 POST 请求?GET 的话方便一些,POST 的话稍微麻烦一点。
      

  3.   

    写了个测试,参考一下,实现了 GET 和 POST 请求。HTTP 服务端使用一个 Servlet 作为测试:import java.io.IOException;import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class UrlConnectionServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;    public UrlConnectionServlet() {
            super();
        }    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("gbk");
            response.setCharacterEncoding("gbk");
            String name = request.getParameter("name");
            String age = request.getParameter("age");
            ServletOutputStream out = response.getOutputStream();
            response.setContentType("text/plain");
            out.print("GET:name=" + name + ":age=" + age);
            out.flush();
        }    protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("gbk");
            response.setCharacterEncoding("gbk");
            String name = request.getParameter("name");
            String age = request.getParameter("age");
            ServletOutputStream out = response.getOutputStream();
            response.setContentType("text/plain");
            out.print("POST:name=" + name + ":age=" + age);
            out.flush();
        }
    }客户端调用如下:import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStreamWriter;
    import java.io.Serializable;
    import java.io.UnsupportedEncodingException;
    import java.io.Writer;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;public class UrlConnection {    public static void main(String[] args) throws IOException {
            Student student = new Student("张三", 20);
            String url = "http://localhost:8080/web/UrlConnectionServlet";
            String charset = "gbk";
            String getResp = httpGet(student, url, charset);
            System.out.println(getResp);
            
            String postResp = httpPost(student, url, charset);
            System.out.println(postResp);
        }
        
        private static String httpGet(Student student, String address, String charset)
                throws IOException {
            // GET 请求直接将参数放到 URL 中去
            URL url = new URL(student.toUrlString(address, charset));
            HttpURLConnection httpConnection = null;
            try {
                httpConnection = (HttpURLConnection)url.openConnection();
                int responseCode = httpConnection.getResponseCode();
                System.out.println("请求响应: " + responseCode);
                InputStream in = httpConnection.getInputStream();
                return read(in, charset);
            } finally {
                if(httpConnection != null) {
                    httpConnection.disconnect();
                }
            }
        }
        
        private static String httpPost(Student student, String address, String charset) throws IOException {
            // POST 请求的 URL 是一个地址,参数放在 HTTP 正文之中
            URL url = new URL(address);
            HttpURLConnection httpConnection = null;
            try {
                httpConnection = (HttpURLConnection)url.openConnection();
                int responseCode = sendPostRequest(student, httpConnection, charset);            
                System.out.println("请求响应: " + responseCode);
                InputStream in = httpConnection.getInputStream();
                return read(in, "gbk");
            } finally {
                if(httpConnection != null) {
                    httpConnection.disconnect();
                }
            }
        }
        
        private static int sendPostRequest(Student student, HttpURLConnection httpConnection,
                String charset) throws IOException {
            Writer writer = null;
            try {
                httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                // 打开 HTTP 输出流,允许向 HTTP 写入 content
                httpConnection.setDoOutput(true);
                writer = new OutputStreamWriter(httpConnection.getOutputStream(), charset);
                writer.write(student.toPostString(charset));            
            } finally {
                if(writer != null) {
                    writer.close();
                }
            }
            httpConnection.connect();
            return httpConnection.getResponseCode();
        }
        
        private static String read(InputStream in, String charset) throws IOException {
            ByteArrayOutputStream ba = new ByteArrayOutputStream();
            byte[] bys = new byte[8 * 1024];
            for(int n = -1; (n = in.read(bys)) != -1; ) {
                ba.write(bys, 0, n);
            }
            return new String(ba.toByteArray(), charset);
        }
    }class Student implements Serializable {    private static final long serialVersionUID = 5253657949062051574L;
        
        private String name;
        private int age;
        
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        
        public String toUrlString(String url, String charset) {
            StringBuilder sb = new StringBuilder();
            sb.append(url).append("?");
            sb.append("name=").append(NetUtil.urlEncode(name, "gbk"));
            sb.append("&age=").append(age);
            return sb.toString();
        }
        
        public String toPostString(String charset) {
            StringBuilder sb = new StringBuilder();
            sb.append("name=").append(NetUtil.urlEncode(name, "gbk"));
            sb.append("&age=").append(age);
            return sb.toString();
        }
    }class NetUtil {
        
        public static String urlEncode(String str, String encoding) {
            try {
                return URLEncoder.encode(str, encoding);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
                return null;
            }        
        }
    }
      

  4.   

    sun.net.www.protocol.http.HttpURLConnection:http://localhost:8080/WEB/servlet/Test
    java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at cn.imrobin.catcher.UrlCatcher.main(UrlCatcher.java:19)