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
Servlet发送Http请求的更多相关文章
- echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端
1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...
- 原生js发送ajax请求
堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...
- servlet和http请求
1.servlet servlet是和平台无关的服务器组件,可以交互式的来浏览和修改数据,生成动态的web内容.它运行于 servlet容器中2.servlet容器 servlet容器负责servle ...
- Servlet获得Http请求,GET/POST
Servlet获得Http请求 Http请求信息格式 请求行(方法提交方式,URI,Http协议版本) GET方式提交:URI会包含查询字符串 POST方式提交:URI不会包含查询字符串 请求头 Ho ...
- servlet容器处理请求过程
下图是关于tomcat服务器接收客户请求并作出响应的图例. tomcat不仅仅只是一个servlet容器,也是一个web服务器,servlet容器在web服务器之内或者说servlet容器托管于web ...
- 编写爬虫(spider)的预备知识:用java发送HTTP请求
使用原生API来发送http请求,而不是使用apache的库,原因在于这个第三方库变化实在太快了,每个版本都有不小的变化.对于程序员来说,使用它反而会有很多麻烦,比如自己曾经写过的代码将无法复用. 原 ...
- 用IO流发送Http请求
package com.j1.mai.action; import java.io.BufferedReader; import java.io.DataOutputStream; import ja ...
- Java学习笔记--通过java.net.URLConnection发送HTTP请求
http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...
- Ajax发送Post请求
Ajax发送post请求与发送get请求大致类似.以下看详细实例.首先看JSP显示页面: <form action="servlet/LoginServlet" method ...
随机推荐
- 位运算卷积-FWT
问题 给出两个幂级数 \(f,g\) ,求 \[ h=\sum _i\sum _jx^{i\oplus j}f_ig_j \] 其中 \(\oplus\) 是可拆分的位运算. 算法 由于位运算具有独立 ...
- Python【知识点】傻傻的函数内变量
问题的由来 有个学生问我一个问题关于函数内部变量的我们来一起看下代码: Code1 x = 50 def func(): print(x) global x print("x修改前的值:&q ...
- 洛谷P3380 【模板】二逼平衡树(树套树,树状数组,线段树)
洛谷题目传送门 emm...题目名写了个平衡树,但是这道题的理论复杂度最优解应该还是树状数组套值域线段树吧. 就像dynamic ranking那样(蒟蒻的Sol,放一个link骗访问量233) 所有 ...
- 【POJ2796】Feel Good 单调栈
题目大意:给定一个长度为 N 的序列,求任意区间 [ l , r ] 中最小的\(min\{v[i],i\in[l,r] \}*\Sigma_{i=l}^rv[i]\). 题解:这是一道具有标准单调栈 ...
- maven构建SSM项目
对于小型项目来说,使用默认的maven配置项目即可,可是现在分布式项目越来越多,如果巧妙的使用maven部署项目这成了关键. maven的pom.jar.war: 要正确部署得对maven的pom.w ...
- Excel:公式应用技巧汇总
1.合并单元格添加序号:=MAX(A$1:A1)+1 不重复的个数: 公式1:{=SUM(1/COUNTIF(A2:A8,A2:A8))} 公式2:{=SUM(--(MATCH(A2:A8,A2:A8 ...
- Java基础-SSM之mybatis快速入门篇
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
- Java基础-线程安全问题汇总
Java基础-线程安全问题汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存泄漏和内存溢出(out of memory)的区别 1>.什么是内存溢出 答:内存溢出指 ...
- Codeforces 931 C. Laboratory Work
http://codeforces.com/problemset/problem/931/C 题意: 给定一个数列,要求构造一个等长的数列,使得数列的平均值等于给定数列,并且使得构造出的数列中与原数列 ...
- Java SSM框架之MyBatis3(二)MyBatis之Mapper代理的开发方式
Mapper代理的开发规范 1. mapper接口的全限定名要和mapper映射文件的namespace值一致. 2. mapper接口的方法名称要和mapper映射文件的statement的id一致 ...