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 ...
随机推荐
- JDK8新特性,方法的引用
引用方法并运行 在Java中,方法和构造方法都看作是对象的一种,那么你要引用它(不是调用),则可以用::来引用.用来存储这个引用的类型用@FunctionlaInterface注解来标识. 示例: p ...
- 【刷题】BZOJ 2724 [Violet 6]蒲公英
Description Input 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 Output Sample Input ...
- 【刷题】BZOJ 1124 [POI2008]枪战Maf
Description 有n个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪.因此,对于不同的开枪顺序,最后死的人也不同. ...
- 【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)
[BZOJ1005][HNOI2008]明明的烦恼(prufer序列) 题面 BZOJ 洛谷 题解 戳这里 #include<iostream> #include<cstdio> ...
- LCP 模板
LCP Description 给定串 \(S\) . \(m\) 组询问 \((X, Y, L, R)\): 求 \(S[X,Y]\) 与 \(S[L,R]\) 的最长公共前缀. Input 第一行 ...
- SPOJ6340 ZUMA - ZUMA
题意:n个珠子排成一排,都有各自的颜色. 你可以选择不少于w个连续同色的珠子消掉,也可以先放着.你还可以任意插入任意颜色的珠子. 求全部消掉至少要插入几个珠子. 解: 什么毒瘤东西...... 有个十 ...
- 《剑指offer》— JavaScript(31)整数中1出现的次数(从1到n整数中1出现的次数)
整数中1出现的次数(从1到n整数中1出现的次数) 题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12 ...
- 小数点保留若干位小数 %.*f
T4530 青年π https://www.luogu.org/problemnew/show/T4530 #include <cstdio> #include <cstdlib&g ...
- Spring MVC 向页面传值-Map、Model和ModelMap
原文链接:https://www.cnblogs.com/caoyc/p/5635878.html Spring MVC 向页面传值-Map.Model和ModelMap 除了使用ModelAndVi ...
- JavaScript条件和循环以及异常处理
JavaScript条件和循环以及异常处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.布尔类型(Boolean) 布尔类型仅包含真假,与Python不同的是其首字母小写. ...