java http 请求get 和post

本文介绍了一个使用Java编写的简单IP地址信息查询工具。该工具通过发送GET和POST请求到淘宝提供的IP查询服务来获取IP地址的相关信息。文章包含了完整的代码示例,展示了如何利用Java进行HTTP请求,并解析返回的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码,走您



import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class TestIp {
	public static void main(String[] args) {
		String url = "http://ip.taobao.com/service/getIpInfo.php?ip=183.37.106.202";
//		url = "http://bbs.youkuaiyun.com/topics/300229433";
		try {
			sendGetHttp(url);
			sendPostHttp(url);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void sendGetHttp(String url) throws Exception {
		URL url2 = new URL(url);
		HttpURLConnection httpUrl = (HttpURLConnection) url2.openConnection();
		// 连接指定的网络资源
		httpUrl.connect();
		BufferedReader reader = new BufferedReader(new InputStreamReader(
				httpUrl.getInputStream()));
		StringBuffer stringBuffer = new StringBuffer();
		String lines;

		while ((lines = reader.readLine()) != null) {
			stringBuffer.append(lines);

		}
		String b = stringBuffer.toString();
		String newStr = new String(b.getBytes(), "gb2312");

		System.out.println("TestIp.sendHttp()" + newStr);
		newStr = new String(newStr);
		System.out.println("TestIp.sendHttp()" + newStr);
		String str = "\u4e2d\u56fd";
		System.out.println(str);
	}
	/**
	 * 将url 一定要写对,一定可以的
	 * @param url
	 * @throws IOException
	 */
	public static void sendPostHttp(String url) throws IOException { 

           // Post请求的url,与get不同的是不需要带参数 

           URL postUrl = new URL(url); 

           // 打开连接 

           HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection(); 

           //打开读写属性,默认均为false 

           connection.setDoOutput(true);                 
           // 设置请求方式,默认为GET 

           connection.setRequestMethod("POST"); 

           // Post 请求不能使用缓存 

           connection.setUseCaches(false); 

           // URLConnection.setFollowRedirects是static 函数,作用于所有的URLConnection对象。 

           // connection.setFollowRedirects(true); 

           //URLConnection.setInstanceFollowRedirects 是成员函数,仅作用于当前函数 

           connection.setInstanceFollowRedirects(true); 

           // 配置连接的Content-type,配置为application/x- www-form-urlencoded的意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode进行编码 

           connection.setRequestProperty(" Content-Type ", 

                           " application/x-www-form-urlencoded "); 

           // 连接,从postUrl.openConnection()至此的配置必须要在 connect之前完成, 

           // 要注意的是connection.getOutputStream()会隐含的进行调用 connect(),所以这里可以省略 

           //connection.connect(); 

           DataOutputStream out = new DataOutputStream(connection 

                           .getOutputStream()); 

           //正文内容其实跟get的URL中'?'后的参数字符串一致 

           String content = " firstname= "+URLEncoder.encode(" 一个大肥人 ", " utf-8 "); 

           // DataOutputStream.writeBytes将字符串中的16位的 unicode字符以8位的字符形式写道流里面 

           out.writeBytes(content); 

           out.flush(); 

           out.close(); // flush and close 

           BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

           String line; 

           System.out.println(" ============================= "); 

           System.out.println(" Contents of post request "); 

           System.out.println(" ============================= "); 

           while ((line = reader.readLine()) != null) { 

                   System.out.println(line); 

           } 

           System.out.println(" ============================= "); 

           System.out.println(" Contents of post request ends "); 

           System.out.println(" ============================= "); 

           reader.close(); 

           //connection.disconnect(); 

    }}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值