利用java从服务器中获得所需要的数据

package com.http.post;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class HttpUtils {

	// 请求服务器的url
	private static String PATH = "http://localhost:8080/Struts2.3.16.1Hibernate4.3.4Spring4.0.2/user/login.action";
	private static URL url;

	public HttpUtils() {
		// TODO Auto-generated constructor stub
	}

	static {
		try {
			url = new URL(PATH);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @param params
	 *            填写url的参数
	 * @param encode
	 *            字节编码
	 * @return
	 */
	public static String sendPostMEssage(Map params,
			String encode) {
		// 作为StringBuffer初始化的字符串
		StringBuffer buffer = new StringBuffer();
		try {
			if (params != null && !params.isEmpty()) {
				for (Map.Entry entry : params.entrySet()) {
					buffer.append(entry.getKey()).append("=")
							.append(URLEncoder.encode(entry.getValue()))
							.append("&");
				}
			}
			System.out.println(buffer.toString());
			buffer.deleteCharAt(buffer.length() - 1);
			HttpURLConnection urlConnection = (HttpURLConnection) url
					.openConnection();
			urlConnection.setConnectTimeout(3000);
			urlConnection.setRequestMethod("POST");
			urlConnection.setDoInput(true);
			urlConnection.setDoOutput(true);

			byte[] mydata = buffer.toString().getBytes();
			//表示设置请求体的类型是文本类型
			urlConnection.setRequestProperty("Content-Type",
					"application/x-www-form-urlencoded");
			urlConnection.setRequestProperty("Content-Length", String.valueOf(mydata.length));
			//获得输出流,向服务器输出数据
			OutputStream outputStream = urlConnection.getOutputStream();
			outputStream.write(mydata,0,mydata.length);
			outputStream.close();
			//获得服务器响应的结果和状态码
			int responseCode =urlConnection.getResponseCode();
			if(responseCode==200)
			{
				return changeInputStream(urlConnection.getInputStream(),"utf-8");
			}
			

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return "";
	}

	/**
	 * 將一個輸入流轉換為字符串
	 * 
	 * @param inputStream
	 * @param encode
	 * @return
	 */
	private static String changeInputStream(InputStream inputStream,String encode) {
		// TODO Auto-generated method stub
		
		ByteArrayOutputStream outputstream=new ByteArrayOutputStream();
		byte[] data=new byte[1024];
		int len=0;
		String result="";
		if(inputStream!=null){
			try {
				while((len=inputStream.read(data))!=-1){
					outputstream.write(data,0,len);
				}
				result=new String(outputstream.toByteArray(),encode);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		return result;
	}
	
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Map params = new HashMap();
		params.put("username", "admin");
		params.put("password", "123");
		String a=sendPostMEssage(params, "utf-8");
		/*System.out.println(a);*/

	}

}

你可能感兴趣的:(服务器框架)