您的位置:首页 > 其它

[学习笔记]接口工具类

2016-04-16 12:55 357 查看
package com.skyland.utils;

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;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

public class HttpInvoker {

public static final String GET_URL = "";

// 原先:http://

public static final String POST_URL = "";

public static String readContentFromGet(String targetUrl,

Map<String, String> params) throws IOException {

// 拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码

String getURL = GET_URL + targetUrl + "?xx=1";

if (params != null) {

Set<String> key = params.keySet();

for (Iterator it = key.iterator(); it.hasNext();) {

String param = (String) it.next();

String value = params.get(param);

getURL += "&" + param + "="

+ URLEncoder.encode(value, "utf-8");

}

}

URL getUrl = new URL(getURL);

// 根据拼凑的URL,打开连接,URL.openConnection()函数会根据

// URL的类型,返回不同的URLConnection子类的对象,在这里我们的URL是一个http,因此它实际上返回的是HttpURLConnection

HttpURLConnection connection = (HttpURLConnection) getUrl

.openConnection();

// 建立与服务器的连接,并未发送数据

connection.connect();

// 发送数据到服务器并使用Reader读取返回的数据

BufferedReader reader = new BufferedReader(new InputStreamReader(

connection.getInputStream(), "utf-8"));// 设置编码,

StringBuffer res = new StringBuffer();

String lines;

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

res.append(lines);

}

reader.close();

// 断开连接

connection.disconnect();

return res.toString();

}

public static String readContentFromPost(String targetUrl,

Map<String, String> params) throws IOException {

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

URL postUrl = new URL(POST_URL + targetUrl);

// 打开连接

HttpURLConnection connection = (HttpURLConnection) postUrl

.openConnection();

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

connection.setDoOutput(true);

connection.setDoInput(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("test", "utf-8");

if (params != null) {

Set<String> key = params.keySet();

for (Iterator it = key.iterator(); it.hasNext();) {

String param = (String) it.next();

String value = params.get(param);

content += "&" + param + "="

+ URLEncoder.encode(value, "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(), "utf-8"));// 设置编码,

StringBuffer res = new StringBuffer();

String line;

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

res.append(line);

}

reader.close();

// connection.disconnect();

return res.toString();

}

/*

* 处理json数据中的特殊字符

*/

public static String string2Json(String s) {

s = s.replaceAll("\r\n", "</br>");

return s;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: