zoukankan      html  css  js  c++  java
  • 使用URLConnection提交请求

    URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间的通信连接。程序可以通过URLConnection实例向该URL发送请求,读取URL引用的资源。

    通常创建一个和URL的连接,并发送请求、读取此URL引用的资源需要如下几个步骤。

    1、通过调用URL对象openConnection()方法来创建URLConnection对象。

    2、设置URLConnection的参数和普通请求属性。

    3、如果只是发送GET方式请求,使用connect方法建立和远程资源之间的实际连接即可;如果需要发送POST方式的请求,需要获取URLConnection实例对应的输出流来发送请求参数。

    4、远程资源变为可用,程序可以访问远程资源的头字段,或通过输入流读取远程资源的数据。

    如果既要使用输入流读取URLConnection响应的内容,也要使用输出流发送请求参数,一定要先使用输出流,再使用输入流。


    示例程序展示了如何向WEB站点发送GET请求、POST请求,并从Web站点取得响应,该程序中用到一个发送GET、POST请求的工具类,该工具类的代码如下。

    package org.helloword;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.List;
    import java.util.Map;
    
    public class GetPostUtil {
    	public static String sendGet(String url,String params)
    	{
    		String result="";
    		BufferedReader in=null;
    		try {
    			String urlName=url+"?"+params;
    			URL realUrl;
    			realUrl = new URL(urlName);
    			URLConnection conn=realUrl.openConnection();
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestProperty("user-agent", "Mozilla/4.0(compatible;MSIE)");
    			conn.connect();
    			Map<String,List<String>> map=conn.getHeaderFields();
    			for(String key:map.keySet())
    			{
    				System.out.println(key+"--->"+map.get(key));
    			}
    			in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
    			String line;
    			while((line=in.readLine())!=null)
    			{
    				result+="
    "+line;
    			}
    		} 
    		catch (Exception e) {
    			// TODO Auto-generated catch block
    			System.out.println("发送GET请求出现异常!"+e);
    			e.printStackTrace();
    		}
    		finally
    		{
    			if(in!=null)
    			{
    				try {
    					in.close();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    		return result;
    		
    	}
    	public static String sendPost(String url,String params)
    	{
    		PrintWriter out=null;
    		BufferedReader br=null;
    		String result="";
    		try {
    			URL realURL=new URL(url);
    			URLConnection conn=realURL.openConnection();
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestProperty("user-agent", "Mozilla/4.0(compatible;MSIE)");
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			//获取URLConnection对象对应的输入流
    			out=new PrintWriter(conn.getOutputStream());
    			//发送请求参数
    			out.print(params);
    			out.flush();
    			br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
    			String line;
    			while((line=br.readLine())!=null)
    			{
    				result+="
    "+line;
    			}
    			
    			
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			System.out.println("程序出现异常"+e);
    			e.printStackTrace();
    		}
    		finally{
    			try {
    				
    			if(br!=null)
    			{
    				br.close();
    			}
    				if(out!=null)
    				{
    					out.close();
    				}
    				
    					
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		return result;
    		
    	}
    	
    }
    


  • 相关阅读:
    LeetCode OJ 107. Binary Tree Level Order Traversal II
    LeetCode OJ 116. Populating Next Right Pointers in Each Node
    LeetCode OJ 108. Convert Sorted Array to Binary Search Tree
    LeetCode OJ 105. Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode OJ 98. Validate Binary Search Tree
    老程序员解Bug的通用套路
    转载 四年努力,梦归阿里,和大家聊聊成长感悟
    转载面试感悟----一名3年工作经验的程序员应该具备的技能
    Web Service和Servlet的区别
    关于spring xml文件中的xmlns,xsi:schemaLocation
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3165622.html
Copyright © 2011-2022 走看看