今日遇到一个需求,android注册,短信验证码功能。

android请求我服务端,我请求tosms.cn发送验证码短信给android,于是需要在Servlet中发送Http请求

  1. package org.helloword;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.DataOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.net.HttpURLConnection;
  8. import java.net.URL;
  9.  
  10. public class HttpInvoker {
  11.  
  12. public static String STR_URL = "http://localhost:8080/JsonProject/servlet/JsonServlet?action_flag=person";
  13.  
  14. public static void readContentFromGet() throws IOException {
  15. STR_URL = STR_URL + "&param=paramstr";
  16. URL getUrl = new URL(STR_URL);
  17. HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();
  18. connection.connect();
  19. BufferedReader reader = new BufferedReader(new InputStreamReader(
  20. connection.getInputStream()));
  21. System.out.println("=============get================");
  22. String lines;
  23. while ((lines = reader.readLine()) != null) {
  24. System.out.println(lines);
  25. }
  26. reader.close();
  27. connection.disconnect();
  28. }
  29.  
  30. public static void readContentFromPost() throws IOException {
  31. URL postUrl = new URL(STR_URL);
  32. HttpURLConnection connection = (HttpURLConnection) postUrl
  33. .openConnection();
  34. connection.setDoOutput(true); //post这个地方设置为true
  35. connection.setDoInput(true);
  36. connection.setRequestMethod("POST");// Post 请求不能使用缓存
  37. connection.setUseCaches(false);// URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数
  38. connection.setInstanceFollowRedirects(true);// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的
  39. // 意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode进行编码
  40. connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  41. // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,
  42. // 要注意的是connection.getOutputStream会隐式的进行connect。
  43. connection.connect();
  44.  
  45.       //--------------------------传参-------------------------

       OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream(),"UTF-8");

  1.       //body参数在这里put到JSONObject中
    writer.write(data);

        //-----------------------------------------------------------------------

  1. out.flush();
  2. out.close();
  3. BufferedReader reader = new BufferedReader(new InputStreamReader(
  4. connection.getInputStream()));
  5. String line;
  6. System.out.println("=============post================");
  7. while ((line = reader.readLine()) != null) {
  8. System.out.println(line);
  9. }
  10. reader.close();
  11. connection.disconnect();
  12. }
  13.  
  14. /**
  15. * @param args
  16. */
  17. public static void main(String[] args) {
  18. try {
  19. readContentFromGet();
  20. readContentFromPost();
  21. } catch (IOException e) {
  22. e.printStackTrace();
  23. }
  24. }
  25.  
  26. }

post请求案例2

  1. package cn;
  2.  
  3. import java.io.*;
  4. import java.net.HttpURLConnection;
  5. import java.net.URL;
  6. import java.net.URLEncoder;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9.  
  10. public class HttpUtils {
  11.  
  12. /**
  13. * 调用http接口方法
  14. * @param url 接口地址
  15. * @param data json格式参数
  16. * @return
  17. */
  18. public static String SendHttpPOST(String url, String data) throws Exception {
  19. String result = null;
  20. //打开连接
  21. //要发送的POST请求url?Key=Value&Key2=Value2&Key3=Value3的形式
  22. //URL requestUrl = new URL(url + "?" + requestParam);
  23. URL requestUrl = new URL(url);
  24. HttpURLConnection httpConn = (HttpURLConnection)requestUrl.openConnection();
  25.  
  26. //加入数据
  27. httpConn.setRequestMethod("POST");
  28. httpConn.setDoOutput(true);
  29. httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  30. OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream(),"UTF-8");
  31.  
  32. //body参数在这里put到JSONObject中
  33.  
  34. writer.write(data);
  35. writer.flush();
  36. //获取输入流
  37. BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"utf-8"));
  38. int code = httpConn.getResponseCode();
  39. if (HttpURLConnection.HTTP_OK == code || HttpURLConnection.HTTP_CREATED == code){
  40. String temp = in.readLine();
  41. /*连接成一个字符串*/
  42. while (temp != null) {
  43. if (result != null) {
  44. result += temp;
  45. }else {
  46. result = temp;
  47. }
  48. temp = in.readLine();
  49. }
  50. }
  51. return result;
  52. }
  1. 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);
  2.  
  3. }
  1. }

附上源代码http://down.51cto.com/data/2066142

Servlet发送Http请求的更多相关文章

  1. echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

    1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...

  2. 原生js发送ajax请求

    堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...

  3. servlet和http请求

    1.servlet servlet是和平台无关的服务器组件,可以交互式的来浏览和修改数据,生成动态的web内容.它运行于 servlet容器中2.servlet容器 servlet容器负责servle ...

  4. Servlet获得Http请求,GET/POST

    Servlet获得Http请求 Http请求信息格式 请求行(方法提交方式,URI,Http协议版本) GET方式提交:URI会包含查询字符串 POST方式提交:URI不会包含查询字符串 请求头 Ho ...

  5. servlet容器处理请求过程

    下图是关于tomcat服务器接收客户请求并作出响应的图例. tomcat不仅仅只是一个servlet容器,也是一个web服务器,servlet容器在web服务器之内或者说servlet容器托管于web ...

  6. 编写爬虫(spider)的预备知识:用java发送HTTP请求

    使用原生API来发送http请求,而不是使用apache的库,原因在于这个第三方库变化实在太快了,每个版本都有不小的变化.对于程序员来说,使用它反而会有很多麻烦,比如自己曾经写过的代码将无法复用. 原 ...

  7. 用IO流发送Http请求

    package com.j1.mai.action; import java.io.BufferedReader; import java.io.DataOutputStream; import ja ...

  8. Java学习笔记--通过java.net.URLConnection发送HTTP请求

    http://www.cnblogs.com/nick-huang/p/3859353.html 使用Java API发送 get请求或post请求的步骤: 1. 通过统一资源定位器(java.net ...

  9. Ajax发送Post请求

    Ajax发送post请求与发送get请求大致类似.以下看详细实例.首先看JSP显示页面: <form action="servlet/LoginServlet" method ...

随机推荐

  1. JDK8新特性,方法的引用

    引用方法并运行 在Java中,方法和构造方法都看作是对象的一种,那么你要引用它(不是调用),则可以用::来引用.用来存储这个引用的类型用@FunctionlaInterface注解来标识. 示例: p ...

  2. 【刷题】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 ...

  3. 【刷题】BZOJ 1124 [POI2008]枪战Maf

    Description 有n个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪.因此,对于不同的开枪顺序,最后死的人也不同. ...

  4. 【BZOJ1005】[HNOI2008]明明的烦恼(prufer序列)

    [BZOJ1005][HNOI2008]明明的烦恼(prufer序列) 题面 BZOJ 洛谷 题解 戳这里 #include<iostream> #include<cstdio> ...

  5. LCP 模板

    LCP Description 给定串 \(S\) . \(m\) 组询问 \((X, Y, L, R)\): 求 \(S[X,Y]\) 与 \(S[L,R]\) 的最长公共前缀. Input 第一行 ...

  6. SPOJ6340 ZUMA - ZUMA

    题意:n个珠子排成一排,都有各自的颜色. 你可以选择不少于w个连续同色的珠子消掉,也可以先放着.你还可以任意插入任意颜色的珠子. 求全部消掉至少要插入几个珠子. 解: 什么毒瘤东西...... 有个十 ...

  7. 《剑指offer》— JavaScript(31)整数中1出现的次数(从1到n整数中1出现的次数)

    整数中1出现的次数(从1到n整数中1出现的次数) 题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12 ...

  8. 小数点保留若干位小数 %.*f

    T4530 青年π https://www.luogu.org/problemnew/show/T4530 #include <cstdio> #include <cstdlib&g ...

  9. Spring MVC 向页面传值-Map、Model和ModelMap

    原文链接:https://www.cnblogs.com/caoyc/p/5635878.html Spring MVC 向页面传值-Map.Model和ModelMap 除了使用ModelAndVi ...

  10. JavaScript条件和循环以及异常处理

    JavaScript条件和循环以及异常处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.布尔类型(Boolean) 布尔类型仅包含真假,与Python不同的是其首字母小写. ...