三个例子 —JAVA发送http get/post请求,调用http接口、方法

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

 

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.methods.InputStreamRequestEntity;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.httpclient.methods.RequestEntity;

 

public class HttpTool {

 

 /**

  * 发送post请求

  *

  * @author Michael -----CSDN: http://blog.csdn.net/capmiachael

  * @param params

  *   参数

  * @param requestUrl

  *   请求地址

  * @param authorization

  *   授权书

  * @return 返回结果

  * @throws IOException

  */

 public static String sendPost(String params, String requestUrl,

   String authorization) throws IOException {

 

  byte[] requestBytes = params.getBytes("utf-8"); // 将参数转为二进制流

  HttpClient httpClient = new HttpClient();// 客户端实例化

  PostMethod postMethod = new PostMethod(requestUrl);

  //设置请求头Authorization

  postMethod.setRequestHeader("Authorization", "Basic " + authorization);

  // 设置请求头 Content-Type

  postMethod.setRequestHeader("Content-Type", "application/json");

  InputStream inputStream = new ByteArrayInputStream(requestBytes, 0,

    requestBytes.length);

  RequestEntity requestEntity = new InputStreamRequestEntity(inputStream,

    requestBytes.length, "application/json; charset=utf-8"); // 请求体

  postMethod.setRequestEntity(requestEntity);

  httpClient.executeMethod(postMethod);// 执行请求

  InputStream soapResponseStream = postMethod.getResponseBodyAsStream();// 获取返回的流

  byte[] datas = null;

  try {

   datas = readInputStream(soapResponseStream);// 从输入流中读取数据

  } catch (Exception e) {

   e.printStackTrace();

  }

  String result = new String(datas, "UTF-8");// 将二进制流转为String

  // 打印返回结果

  // System.out.println(result);

 

  return result;

 

 }

 

 /**

  * 从输入流中读取数据

  *

  * @param inStream

  * @return

  * @throws Exception

  */

 public static byte[] readInputStream(InputStream inStream) throws Exception {

  ByteArrayOutputStream outStream = new ByteArrayOutputStream();

  byte[] buffer = new byte[1024];

  int len = 0;

  while ((len = inStream.read(buffer)) != -1) {

   outStream.write(buffer, 0, len);

  }

  byte[] data = outStream.toByteArray();

  outStream.close();

  inStream.close();

  return data;

 }

}

例2:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.InetSocketAddress;

import java.net.Proxy;

import java.net.URL;

import java.net.URLConnection;

import java.util.List;

import java.util.Map;

 

/**

 * Http请求工具类

 * @author snowfigure

 * @since 2014-8-24 13:30:56

 * @version v1.0.1

 */

public class HttpRequestUtil {

 static boolean proxySet = false;

 static String proxyHost = "127.0.0.1";

 static int proxyPort = 8087;

 /**

  * 编码

  * @param source

  * @return

  */

 public static String urlEncode(String source,String encode) {

  String result = source;

  try {

   result = java.net.URLEncoder.encode(source,encode);

  } catch (UnsupportedEncodingException e) {

   e.printStackTrace();

   return "0";

  }

  return result;

 }

 public static String urlEncodeGBK(String source) {

  String result = source;

  try {

   result = java.net.URLEncoder.encode(source,"GBK");

  } catch (UnsupportedEncodingException e) {

   e.printStackTrace();

   return "0";

  }

  return result;

 }

 /**

  * 发起http请求获取返回结果

  * @param req_url 请求地址

  * @return

  */

 public static String httpRequest(String req_url) {

  StringBuffer buffer = new StringBuffer();

  try {

   URL url = new URL(req_url);

   HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

 

   httpUrlConn.setDoOutput(false);

   httpUrlConn.setDoInput(true);

   httpUrlConn.setUseCaches(false);

 

   httpUrlConn.setRequestMethod("GET");

   httpUrlConn.connect();

 

   // 将返回的输入流转换成字符串

   InputStream inputStream = httpUrlConn.getInputStream();

   InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");

   BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

 

   String str = null;

   while ((str = bufferedReader.readLine()) != null) {

    buffer.append(str);

   }

   bufferedReader.close();

   inputStreamReader.close();

   // 释放资源

   inputStream.close();

   inputStream = null;

   httpUrlConn.disconnect();

 

  } catch (Exception e) {

   System.out.println(e.getStackTrace());

  }

  return buffer.toString();

 }

 

 /**

  * 发送http请求取得返回的输入流

  * @param requestUrl 请求地址

  * @return InputStream

  */

 public static InputStream httpRequestIO(String requestUrl) {

  InputStream inputStream = null;

  try {

   URL url = new URL(requestUrl);

   HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

   httpUrlConn.setDoInput(true);

   httpUrlConn.setRequestMethod("GET");

   httpUrlConn.connect();

   // 获得返回的输入流

   inputStream = httpUrlConn.getInputStream();

  } catch (Exception e) {

   e.printStackTrace();

  }

  return inputStream;

 }

 

 

 /**

  * 向指定URL发送GET方法的请求

  *

  * @param url

  *   发送请求的URL

  * @param param

  *   请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

  * @return URL 所代表远程资源的响应结果

  */

 public static String sendGet(String url, String param) {

  String result = "";

  BufferedReader in = null;

  try {

   String urlNameString = url + "?" + param;

   URL realUrl = new URL(urlNameString);

   // 打开和URL之间的连接

   URLConnection connection = realUrl.openConnection();

   // 设置通用的请求属性

   connection.setRequestProperty("accept", "*/*");

   connection.setRequestProperty("connection", "Keep-Alive");

   connection.setRequestProperty("user-agent",

     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

   // 建立实际的连接

   connection.connect();

   // 获取所有响应头字段

   Map<String, List<String>> map = connection.getHeaderFields();

   // 遍历所有的响应头字段

   for (String key : map.keySet()) {

    System.out.println(key + "--->" + map.get(key));

   }

   // 定义 BufferedReader输入流来读取URL的响应

   in = new BufferedReader(new InputStreamReader(

     connection.getInputStream()));

   String line;

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

    result += line;

   }

  } catch (Exception e) {

   System.out.println("发送GET请求出现异常!" + e);

   e.printStackTrace();

  }

  // 使用finally块来关闭输入流

  finally {

   try {

    if (in != null) {

     in.close();

    }

   } catch (Exception e2) {

    e2.printStackTrace();

   }

  }

  return result;

 }

 

 /**

  * 向指定 URL 发送POST方法的请求

  *

  * @param url

  *   发送请求的 URL

  * @param param

  *   请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

  * @param isproxy

  *    是否使用代理模式

  * @return 所代表远程资源的响应结果

  */

 public static String sendPost(String url, String param,boolean isproxy) {

  OutputStreamWriter out = null;

  BufferedReader in = null;

  String result = "";

  try {

   URL realUrl = new URL(url);

   HttpURLConnection conn = null;

   if(isproxy){//使用代理模式

    @SuppressWarnings("static-access")

    Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));

    conn = (HttpURLConnection) realUrl.openConnection(proxy);

   }else{

    conn = (HttpURLConnection) realUrl.openConnection();

   }

   // 打开和URL之间的连接

 

   // 发送POST请求必须设置如下两行

   conn.setDoOutput(true);

   conn.setDoInput(true);

   conn.setRequestMethod("POST"); // POST方法

 

 

   // 设置通用的请求属性

 

   conn.setRequestProperty("accept", "*/*");

   conn.setRequestProperty("connection", "Keep-Alive");

   conn.setRequestProperty("user-agent",

     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

   conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

 

   conn.connect();

 

   // 获取URLConnection对象对应的输出流

   out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

   // 发送请求参数

   out.write(param);

   // flush输出流的缓冲

   out.flush();

   // 定义BufferedReader输入流来读取URL的响应

   in = new BufferedReader(

     new InputStreamReader(conn.getInputStream()));

   String line;

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

    result += line;

   }

  } catch (Exception e) {

   System.out.println("发送 POST 请求出现异常!"+e);

   e.printStackTrace();

  }

  //使用finally块来关闭输出流、输入流

  finally{

   try{

    if(out!=null){

     out.close();

    }

    if(in!=null){

     in.close();

    }

   }

   catch(IOException ex){

    ex.printStackTrace();

   }

  }

  return result;

 }

 

 public static void main(String[] args) {

  //demo:代理访问

  String url = "http://api.adf.ly/api.php";

  String para = "key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com";

 

  String sr=HttpRequestUtil.sendPost(url,para,true);

  System.out.println(sr);

 }

 

}

例3

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

/**

  * 发送Http post请求

  *

  * @param xmlInfo

  *   json转化成的字符串

  * @param URL

  *   请求url

  * @return 返回信息

  */

 public static String doHttpPost(String xmlInfo, String URL) {

  System.out.println("发起的数据:" + xmlInfo);

  byte[] xmlData = xmlInfo.getBytes();

  InputStream instr = null;

  java.io.ByteArrayOutputStream out = null;

  try {

   URL url = new URL(URL);

   URLConnection urlCon = url.openConnection();

   urlCon.setDoOutput(true);

   urlCon.setDoInput(true);

   urlCon.setUseCaches(false);

   urlCon.setRequestProperty("content-Type", "application/json");

   urlCon.setRequestProperty("charset", "utf-8");

   urlCon.setRequestProperty("Content-length",

     String.valueOf(xmlData.length));

   System.out.println(String.valueOf(xmlData.length));

   DataOutputStream printout = new DataOutputStream(

     urlCon.getOutputStream());

   printout.write(xmlData);

   printout.flush();

   printout.close();

   instr = urlCon.getInputStream();

   byte[] bis = IOUtils.toByteArray(instr);

   String ResponseString = new String(bis, "UTF-8");

   if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {

    System.out.println("返回空");

   }

   System.out.println("返回数据为:" + ResponseString);

   return ResponseString;

 

  } catch (Exception e) {

   e.printStackTrace();

   return "0";

  } finally {

   try {

    out.close();

    instr.close();

 

   } catch (Exception ex) {

    return "0";

   }

  }

 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值