Java的Http通信

一、Http的Get方式读取网络数据

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


public class TestGet {

	public static void main(String[] args) {
		new ReadByGet().start();
	}

	static class ReadByGet extends Thread{
		public void run() {
			try {

				URL url=new URL("http://fanyi.youdao.com/openapi.do?keyfrom=wangyetiaoshi&key=834471614&type=data&doctype=xml&version=1.1&q=Hello");
				URLConnection connection=url.openConnection();
				InputStream is=connection.getInputStream();
				InputStreamReader isr=new InputStreamReader(is);
				BufferedReader br=new BufferedReader(isr);

				String line;
				StringBuilder builder=new StringBuilder();
				while((line=br.readLine())!=null){
					builder.append(line);
				}

				br.close();
				isr.close();
				is.close();

				System.out.println(builder.toString());


			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}


2、Http 的 Post 方式与网络交互通信
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


public class TestPost {

	public static void main(String[] args) {
		new ReadByPost().start();
	}

	static class ReadByPost extends Thread{
		public void run() {
			try {
				URL url=new URL("http://fanyi.youdao.com/openapi.do");
				HttpURLConnection connection=(HttpURLConnection) url.openConnection();
				connection.addRequestProperty("encoding", "UTF-8");
				connection.setDoInput(true);
				connection.setDoOutput(true);
				connection.setRequestMethod("POST");
				
				OutputStream os=connection.getOutputStream();
				OutputStreamWriter osw=new OutputStreamWriter(os);
				BufferedWriter bw=new BufferedWriter(osw);
				
				bw.write("keyfrom=wangyetiaoshi&key=834471614&type=data&doctype=xml&version=1.1&q=Hello");
				bw.flush();
				
				InputStream is=connection.getInputStream();
				InputStreamReader isr=new InputStreamReader(is);
				BufferedReader br=new BufferedReader(isr);
				
				String line;
				StringBuilder builder=new StringBuilder();
				while((line=br.readLine())!=null){
					builder.append(line);
				}
				bw.close();
				osw.close();
				os.close();
				br.close();
				isr.close();
				is.close();
				
				System.out.println(builder.toString());
				
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
	}
}


三、HttpClient进行Get方式通信

httpclient下载网址:http://hc.apache.org/downloads.cgi

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;



public class TestHttpGet {

	public static void main(String[] args) {
		new Get().start();
	}

	static class Get extends Thread{
		HttpClient client=HttpClients.createDefault();
		
		public void run() {
			HttpGet get=new HttpGet("http://www.baidu.com");
			
			try {
				HttpResponse response=client.execute(get);
				HttpEntity entity=response.getEntity();
				String result=EntityUtils.toString(entity,"UTF-8");
				System.out.println(result);
				
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}
}

四、 HttpClient 进行 Post 方式通信

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class TestHttpPost {

	public static void main(String[] args) {
		new Post().start();
	}

	static class Post extends Thread {
		HttpClient client = HttpClients.createDefault();

		public void run() {
			HttpPost post = new HttpPost("http://fanyi.youdao.com/openapi.do");
			try {
				List<BasicNameValuePair> parameters=new ArrayList<>();
				parameters.add(new BasicNameValuePair("keyfrom", "wangyetiaoshi"));
				parameters.add(new BasicNameValuePair("key", "834471614"));
				parameters.add(new BasicNameValuePair("doctype", "xml"));
				parameters.add(new BasicNameValuePair("version", "1.1"));
				parameters.add(new BasicNameValuePair("q", "welcome"));
				
				post.setEntity(new UrlEncodedFormEntity(parameters));
				HttpResponse response = client.execute(post);
				HttpEntity entity = response.getEntity();
				String result = EntityUtils.toString(entity, "UTF-8");
				System.out.println(result);

			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值