GET、POST请求处理中文问题(用HttpURLConnection模拟发送请求)

一、首先是用HttpURLConnection来分别构造GET和POST请求,代码如下

package com.siwen.net;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Enumeration;

public class TestURL {
	
	private static String getLocalHostIP(){
		String hostip = "";
		Enumeration<NetworkInterface> allNetInterfaces = null;
		try {
			allNetInterfaces = NetworkInterface.getNetworkInterfaces();
		} catch (SocketException e) {
			e.printStackTrace();
		}
		InetAddress ip = null;
		while (allNetInterfaces.hasMoreElements()){
			NetworkInterface netInterface = allNetInterfaces.nextElement();
//			System.out.println("netInterface:"+netInterface.getName());
			Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
			while (addresses.hasMoreElements()){
				ip = addresses.nextElement();
//				System.out.println("InetAddress from "+netInterface.getName()+":"+ip);
				if (ip != null && ip instanceof Inet4Address){
					if(!ip.getHostAddress().equals("127.0.0.1")){
						hostip = ip.getHostAddress();
					}
				}
			}
		}
//		System.out.println("final hostip:"+hostip);
		return hostip;
	 }
	
	public static void readContentFromGet() throws IOException{
		String getURL = "http://"+getLocalHostIP()+":8080/jobticket/sendJobticket?alarmid=test&userName="+URLEncoder.encode("中文", "utf-8")+"&title="+URLEncoder.encode("新告警","utf-8")+"&OperationNotes="+URLEncoder.encode("New Alarm Arrival","utf-8");
		URL url = new URL(getURL);
		System.out.println("url:"+url);
//		根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型返回不同的URLConnection子类的对象,
//		 这里URL是一个http,因此实际返回的是HttpURLConnection
		HttpURLConnection connection = (HttpURLConnection)url.openConnection();
		connection.setRequestProperty("Charset", "UTF-8");
//		 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到服务器
		connection.connect();
//		取得输入流,并使用Reader读取
		BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
		System.out.println("=============================");
        System.out.println("Contents of get request");
        System.ou
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值