`

通过HttpURLConnection使用Get和Post方法发送数据

    博客分类:
  • JAVA
 
阅读更多

 

Get方法发送数据

在Get类中

 

 

Java代码   收藏代码
  1. HttpURLConnection conn=(HttpURLConnection)new URL(path).openConnection();  
  2.         conn.setConnectTimeout(15000);  
  3.         conn.setRequestMethod("GET");  

 

测试方法

 

 

Java代码   收藏代码
  1. new Get("http://XXXXX/WebService/index/indexindex.action?id=1&name="+URLEncoder.encode("您好","utf-8")).setGetRequest()  

 

服务器端接收数据

 

 

Java代码   收藏代码
  1. HttpServletRequest request=ServletActionContext.getRequest();  
  2.         System.out.println(id);    
  3.         System.out.println(new String(name.getBytes("ISO-8859-1"),"utf-8"));  

 

 

Post方法发送数据

 

 

Java代码   收藏代码
  1. byte [] entity=("id=1&name="+URLEncoder.encode("您好","utf-8")).getBytes();  
  2.         HttpURLConnection conn=(HttpURLConnection)new URL(path).openConnection();  
  3.         conn.setConnectTimeout(5000);  
  4.         conn.setRequestMethod("POST");  
  5.         conn.setDoOutput(true);  
  6.         conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");//用于指导实体数据的内容类型  
  7.         conn.setRequestProperty("Content-Length",String.valueOf(entity.length));//entity为要传输的数据格式为  title=hello&time=20//可以对该数据编码  
  8.         OutputStream outStream=conn.getOutputStream();  
  9.         outStream.write(entity);  

 测试方法

 

 

Java代码   收藏代码
  1. new Post("http://XXXXXX/WebService/index/indexreceivePost.action").setPostRequest()  

 

服务器端接收数据

 

 

Java代码   收藏代码
  1. HttpServletRequest request=ServletActionContext.getRequest();  
  2.         System.out.println(id);   
  3.         request.setCharacterEncoding("utf-8");  
  4.         System.out.println(name);   

 

 

向服务器端传输xml数据

 

 

Java代码   收藏代码
  1. byte [] entity="<strings><id>1</id><name>hello</name></strings>".getBytes();  
  2.         HttpURLConnection conn=(HttpURLConnection)new URL(path).openConnection();  
  3.         conn.setConnectTimeout(5000);  
  4.         conn.setRequestMethod("POST");  
  5.         conn.setDoOutput(true);  
  6.         conn.setRequestProperty("Content-Type","text/xml; charset=UTF-8");//用于指导实体数据的内容类型  
  7.         conn.setRequestProperty("Content-Length",String.valueOf(entity.length));  
  8.         OutputStream outStream=conn.getOutputStream();  
  9.         outStream.write(entity);  

 服务器端接收数据

 

 

Java代码   收藏代码
  1. HttpServletRequest request=ServletActionContext.getRequest();  
  2.         InputStream is=request.getInputStream();  

 

Notice:Get方式发送数据一般小于2K,如果大于2K,最好用Post方式

 

 

 

package com.hrtx.util;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class StreamTool {
    /**
     * 从输入流中读取数据
     * @param inStream
     * @return
     * @throws Exception
     */
    public static byte[] readInputStream(InputStream inStream) throws Exception{
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while( (len = inStream.read(buffer)) !=-1 ){
            outStream.write(buffer, 0, len);
        }
        byte[] data = outStream.toByteArray();//网页的二进制数据
        outStream.close();
        inStream.close();
        return data;
    }
}

	public static void testAdd() throws IOException{
		String str = "http://localhost:8080/search/externalAccessServlet?";
        // 正文,正文内容其实跟get的URL中'?'后的参数字符串一致
//      String content = "firstname=" + URLEncoder.encode("一个大肥人", "utf-8");
		str = str+"cmd="+URLEncoder.encode("add", "utf-8");
		URL url = new URL(str);
		HttpURLConnection conn =  (HttpURLConnection) url.openConnection();
		 // http正文内,因此需要设为true
		conn.setDoInput(true);
		conn.setDoOutput(true);
        // Post 请求不能使用缓存
		conn.setUseCaches(false);
		conn.setRequestMethod("POST");// 提交模式
        // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
        // 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode
        // 进行编码
//		conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
	    conn.setRequestProperty("Content-Type","text/xml; charset=UTF-8");		
		OutputStream os = conn.getOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(os);
		ServiceConfigPOJO pojo1 = new ServiceConfigPOJO("zzw",OpType.read, "192.168.32.133:13710");
		ServiceConfigPOJO pojo2 = new ServiceConfigPOJO("zzw",OpType.writer, "192.168.32.133:13710");
		List<ServiceConfigPOJO> list = new ArrayList<ServiceConfigPOJO>();
		list.add(pojo1);
		list.add(pojo2);
		oos.writeObject(list);
		oos.flush();
		oos.close();
		 // 要注意的是connection.getOutputStream会隐含的进行connect。
		BufferedInputStream ois = new BufferedInputStream(conn.getInputStream());
		byte[] b = new byte[1024];
		ois.read(b);
		System.out.println(new String(b,"UTF-8"));
	}
	
	public static void testUpdate() throws Exception{
		String str = "http://localhost:8080/search/externalAccessServlet?";
        // 正文,正文内容其实跟get的URL中'?'后的参数字符串一致
//      String content = "firstname=" + URLEncoder.encode("一个大肥人", "utf-8");
		str = str+"cmd="+URLEncoder.encode("update", "utf-8");
		URL url = new URL(str);
		HttpURLConnection conn =  (HttpURLConnection) url.openConnection();
		 // http正文内,因此需要设为true
		conn.setDoInput(true);
		conn.setDoOutput(true);
        // Post 请求不能使用缓存
		conn.setUseCaches(false);
		conn.setRequestMethod("POST");// 提交模式
        // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
        // 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode
        // 进行编码
//		conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
	    conn.setRequestProperty("Content-Type","text/xml; charset=UTF-8");		
		OutputStream os = conn.getOutputStream();
		ObjectOutputStream oos = new ObjectOutputStream(os);
		ServiceConfigPOJO pojo1 = new ServiceConfigPOJO("zzw",OpType.read, "192.168.32.130:13710");
		oos.writeObject(pojo1);
		oos.flush();
		oos.close();
		 // 要注意的是connection.getOutputStream会隐含的进行connect。
		BufferedInputStream ois = new BufferedInputStream(conn.getInputStream());
		InputStream is = conn.getInputStream();
		byte[] b = readInputStream(is);
		System.out.println(new String(b,"UTF-8"));
//		
//		BufferedInputStream ois = new BufferedInputStream(conn.getInputStream());
//		ObjectInputStream ss = new ObjectInputStream(conn.getInputStream());
//		Object objct = ss.readObject();
//		System.out.println((Boolean)objct);
	}	



  


  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics