Servlet发送Http请求
今日遇到一个需求,android注册,短信验证码功能。
android请求我服务端,我请求tosms.cn发送验证码短信给android,于是需要在Servlet中发送Http请求
package org.helloword; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpInvoker { public static String STR_URL = "http://localhost:8080/JsonProject/servlet/JsonServlet?action_flag=person"; public static void readContentFromGet() throws IOException { STR_URL = STR_URL + "¶m=paramstr"; URL getUrl = new URL(STR_URL); HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection(); connection.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream())); System.out.println("=============get================"); String lines; while ((lines = reader.readLine()) != null) { System.out.println(lines); } reader.close(); connection.disconnect(); } public static void readContentFromPost() throws IOException { URL postUrl = new URL(STR_URL); HttpURLConnection connection = (HttpURLConnection) postUrl .openConnection(); connection.setDoOutput(true); //post这个地方设置为true connection.setDoInput(true); connection.setRequestMethod("POST");// Post 请求不能使用缓存 connection.setUseCaches(false);// 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();
//--------------------------传参-------------------------
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream(),"UTF-8");
//body参数在这里put到JSONObject中
writer.write(data);
//-----------------------------------------------------------------------
out.flush(); out.close(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; System.out.println("=============post================"); while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); connection.disconnect(); } /** * @param args */ public static void main(String[] args) { try { readContentFromGet(); readContentFromPost(); } catch (IOException e) { e.printStackTrace(); } } }
post请求案例2
package cn; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; public class HttpUtils { /** * 调用http接口方法 * @param url 接口地址 * @param data json格式参数 * @return */ public static String SendHttpPOST(String url, String data) throws Exception { String result = null; //打开连接 //要发送的POST请求url?Key=Value&Key2=Value2&Key3=Value3的形式 //URL requestUrl = new URL(url + "?" + requestParam); URL requestUrl = new URL(url); HttpURLConnection httpConn = (HttpURLConnection)requestUrl.openConnection(); //加入数据 httpConn.setRequestMethod("POST"); httpConn.setDoOutput(true); httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream(),"UTF-8"); //body参数在这里put到JSONObject中 writer.write(data); writer.flush(); //获取输入流 BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"utf-8")); int code = httpConn.getResponseCode(); if (HttpURLConnection.HTTP_OK == code || HttpURLConnection.HTTP_CREATED == code){ String temp = in.readLine(); /*连接成一个字符串*/ while (temp != null) { if (result != null) { result += temp; }else { result = temp; } temp = in.readLine(); } } return result; }
public static void main(String[] args) throws Exception {
String url ="http://172.16.129.1:8080/api/v1/1785/login/login.do";//
String data ="username=interface&password=153ef57a3316a31bbb2134bd0cfe16b2";
String s = HttpUtils.SendHttpPOST(url,data);
System.err.println(s);
}
}
附上源代码http://down.51cto.com/data/2066142