java中常见的远程调用get、post请求的方法1 :URLConnection

package test;

import java.io.BufferedReader;
import java.io.IOException;
import
java.io.InputStreamReader;
import java.io.PrintWriter;
import
java.net.URL;
import java.net.URLConnection;
import
java.util.List;


import java.util.Map;

public class Test {
     /**
      * 向指定URL发送GET方法的请求
      *

* @param url
      *            发送请求的URL
      * @return URL 所代表远程资源的响应结果
      */
     public static
String sendGet(String url) {
         String result = "";
        
BufferedReader in = null;
         try {
             URL realUrl = new
URL(url);
             // 打开和URL之间的连接
             URLConnection
connection = realUrl.openConnection();
             //
设置通用的请求属性
             connection.setRequestProperty("accept",
"*/*");
             connection.setRequestProperty("connection",
"Keep-Alive");
            
connection.setRequestProperty("user-agent",
                     "Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1;SV1)");
             //
建立实际的连接
             connection.connect();
             //
获取所有响应头字段
             Map<String, List<String>> map =
connection.getHeaderFields();
             // 遍历所有的响应头字段
             for
(String key : map.keySet()) {
                 System.out.println(key +
"--->" + map.get(key));
             }
             // 定义
BufferedReader输入流来读取URL的响应
             in = new BufferedReader(new
InputStreamReader(
                    
connection.getInputStream()));
             String line;
            
while ((line = in.readLine()) != null) {
                 result +=
line;
             }
         } catch (Exception e) {
            
System.out.println("发送GET请求出现异常!" + e);
            
e.printStackTrace();
         }
         // 使用finally块来关闭输入流
        
finally {
             try {
                 if (in != null)
{
                     in.close();
                 }
             }
catch (Exception e2) {
                 e2.printStackTrace();
            
}
         }
         return result;
     }

/**
      * 向指定 URL 发送POST方法的请求
      *
      * @param
url
      *            发送请求的 URL
      * @param param
     
*            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
      * @return
所代表远程资源的响应结果
      */
     public static String sendPost(String url,
String param) {
         PrintWriter out = null;
         BufferedReader
in = null;
         String result = "";
         try {
             URL
realUrl = new URL(url);
             // 打开和URL之间的连接
            
URLConnection conn = realUrl.openConnection();
             //
设置通用的请求属性
             conn.setRequestProperty("accept",
"*/*");
             conn.setRequestProperty("connection",
"Keep-Alive");
            
conn.setRequestProperty("user-agent",
                     "Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1;SV1)");
             //
发送POST请求必须设置如下两行
             conn.setDoOutput(true);
            
conn.setDoInput(true);
             //
获取URLConnection对象对应的输出流
             out = new
PrintWriter(conn.getOutputStream());
            
             //
发送请求参数
             out.print(param);
             //
flush输出流的缓冲
             out.flush();
             //
定义BufferedReader输入流来读取URL的响应
             in = new
BufferedReader(
                     new
InputStreamReader(conn.getInputStream()));
             String
line;
             while ((line = in.readLine()) != null)
{
                 result += line;
             }
         } catch
(Exception e) {
             System.out.println("发送 POST
请求出现异常!"+e);
             e.printStackTrace();
         }
        
//使用finally块来关闭输出流、输入流
         finally{
            
try{
                 if(out!=null){
                    
out.close();
                 }
                
if(in!=null){
                     in.close();
                
}
             }
             catch(IOException ex){
                
ex.printStackTrace();
             }
         }
         return
result;
     }

}

				
时间: 2024-10-31 19:51:10

java中常见的远程调用get、post请求的方法1 :URLConnection的相关文章

Java中常见的5种WEB服务器介绍

这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问.开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有Tomcat.Resin.JBoss.WebSphere 和 WebLogic 等,下面将分别进行介绍. Tomc

Java中常见的jar包的用途

jar包用途  axis.jar   SOAP引擎包  commons-discovery-0.2.jar   用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期管理的常用方法.  jaxrpc.jar     Axis运行所需要的组件包  saaj.jar 创建到端点的点到点连接的方法.创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法.    wsdl4j-1.5.1.jar Axis运行所需要的组件包  activation.jar JAF框架的jar

java中常见的输入输出流案例学习

字节输入流: 1.FileInputStream 用途:从文件系统中的文件获得输入字节,常用于读取图像.声音等原始字节流,读取字符流可考虑使用FileReader 详细构造函数与常用方法可参考API文档,网上已经有中文版的API了,我是个E文盲,伤不起 这里介绍一个最常见的方法: read(byte[] b, int off, int len) 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中. ->off:b字节数组中的偏移量 小知识:数组偏移量,比如a[1,2,3,4,5]

Java中常见的设计模式

我在这里稍微总结一下Java中常见的一些设计模式. 1,单例设计模式 单例设计是Java中最常见的模式之一,,它就是要保证程序里边只有一个对象实例.就好比班上都叫他为班长,是因为得保证班上只有一个班长. 单例设计模式的程序设计思想反应的是Java面向对象思想的封装特性.就是为了保证只有一个对象实例,我们私有化它的构造函数,对外只提供一些相关的 公共方法来获得对象实例. 单例设计模式的实现主要分为饿汉式和懒汉式 饿汉式是先对类的对象实例化,随着类的加载对象也加载进来缺点是会造成性能的损耗好处是实现

Java中常见的Exception种类

1.ClassNotFoundException 2.IOException 3.NoSuchFieldException 4.NoSuchMethodException 5.SQLException 6.RuntimeException Java中常见的Exception种类

Java中Excel导入功能实现、excel导入公共方法_POI -

这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> materialDataImport2(byte[] fileBytes, String fileName) { //return DataImport(fileBytes, fileName, "inv_m"); File file = FileUtils.getFileFromByte

Java中利用MessageFormat对象实现类似C# string.Format方法格式化

我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使得代码更为直观清楚. 最近使用java时候却java的string.Format与c#重点string.Format用法不一样,java中的string.format更类似于C语言的sprintf()方法 例如: String str=null; str=String.format("Hello,%

Java中String类与Integer类的几个方法

计算诸如-123,456,789 + 123,123的值 import java.math.BigInteger; import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); String str1, str2; BigInteger a, b; while(cin.hasNext()){ str1 = cin.

java中两double相加精度丢失问题及解决方法

在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void testBig(){ System.out.println(0.11+2001299.32); } 控制台输出2001299.4300000002 我们吃惊的发现,结果并不是我们预想的那样,这是为什么呢?又如何解决呢? 现贴出BigDecimal的一个构造函数的文档供大家参考 BigDecimal pu