JDK URLConnection示例

来源:互联网 发布:access导入sql server 编辑:程序博客网 时间:2024/06/06 00:43

代码参考Core Java II Chapter 3 Networking - Making URL Connections

发现在GET的时候,不加connect()调用也行,网上有各种讨论,但暂未找到较好的答案。

package com.example.http;import java.io.IOException;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Scanner;public class Main {    public static void main(String[] args) {         try {             testHttpGet();             testHttpPost();         } catch (IOException e) {             e.printStackTrace();         }    }    private static void testHttpGet() throws IOException {        String urlString = null;        urlString = "http://www.baidu.com";        URL url = null;        url = new URL(urlString);        URLConnection connection = url.openConnection();        //connection.connect();        debugHeaderFields(connection);        debugSomeFunctions(connection);        Scanner in = null;        try {            in = new Scanner(connection.getInputStream());        } catch (IOException e) {            e.printStackTrace();            return;        }        // print first 30 lines of contents        for (int n = 1; in.hasNextLine() && n <= 30; n++) {           System.out.println(in.nextLine());        }        if (in.hasNextLine()) System.out.println(". . .");        in.close();    }    private static void debugSomeFunctions(URLConnection connection) {        System.out.println("Some convenience functions:");        System.out.println("----------");        System.out.println("getContentType: " + connection.getContentType());        System.out.println("getContentLength: " + connection.getContentLength());        System.out.println("getContentEncoding: " + connection.getContentEncoding());        System.out.println("getDate: " + connection.getDate());        System.out.println("getExpiration: " + connection.getExpiration());        System.out.println("getLastModifed: " + connection.getLastModified());        System.out.println("----------");    }    private static void debugHeaderFields(URLConnection connection) {        Map<String, List<String>> headers = connection.getHeaderFields();        System.out.println("Header fields:");        for (Map.Entry<String, List<String>> entry : headers.entrySet()) {           String key = entry.getKey();           for (String value : entry.getValue()) {              System.out.println(key + ": " + value);           }        }    }    private static void testHttpPost() throws IOException {        String urlString = null;        urlString = "http://...";        URL url = new URL(urlString);        URLConnection connection = url.openConnection();        connection.setDoOutput(true);        Map<String, String> nameValuePairs = new HashMap<String, String>();        nameValuePairs.put("key1", "value1");        nameValuePairs.put("key2", "value2");        //additional parameters ...        PrintWriter out = new PrintWriter(connection.getOutputStream());        boolean first = true;        for (Map.Entry<String, String> pair : nameValuePairs.entrySet())        {            if (first) first = false;            else out.print('&');            String name = pair.getKey();            String value = pair.getValue();            out.print(name);            out.print('=');            out.print(URLEncoder.encode(value, "UTF-8"));        }        out.close();        connection.connect();        debugHeaderFields(connection);        debugSomeFunctions(connection);        Scanner in = null;        StringBuilder response = new StringBuilder();        in = new Scanner(connection.getInputStream());        while (in.hasNextLine()) {           response.append(in.nextLine());           response.append("\n");        }        in.close();        System.out.println("Response:");        System.out.println(response.toString());    }}
0 0
原创粉丝点击