zoukankan      html  css  js  c++  java
  • 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 + "&param=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

  • 相关阅读:
    Solaris+Oracle安装(详细图解)
    linux卸载和安装jdk
    UTF8, Unicode, GB2312格式串转换之C语言版
    linux安装ant
    在 Linux 平台下使用 JNI
    华为C/C++笔试题(1)
    c面试
    mongodb数据库
    YARN
    NPM(包管理器)
  • 原文地址:https://www.cnblogs.com/xiaoliu66007/p/4629754.html
Copyright © 2011-2022 走看看