当前位置: 移动技术网 > IT编程>开发语言>Java > java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)

2019年07月22日  | 移动技术网IT编程  | 我要评论

一般在项目开发中难免遇到外部接口的调用,本文实例讲述了java后台调用httpurlconnection类模拟浏览器请求的方法。可用于接口调用。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:
package com.cplatform.movie.back.test;

import java.io.bufferedreader;
import java.io.dataoutputstream;
import java.io.inputstreamreader;
import java.net.httpurlconnection;
import java.net.url;
import java.net.urlencoder;

public class httpurlconnectiontest {
    public static final string get_url = "http://112.4.27.9/mall-back/if_user/store_list?storeid=32";
    public static final string post_url = "http://112.4.27.9/mall-back/if_user/store_list";
   
    /**
     * 接口调用 get
     */
    public static void httpurlconectionget() {
        try {
            url url = new url(get_url);    // 把字符串转换为url请求地址
            httpurlconnection connection = (httpurlconnection) url.openconnection();// 打开连接
            connection.connect();// 连接会话
            // 获取输入流
            bufferedreader br = new bufferedreader(new inputstreamreader(connection.getinputstream()));
            string line;
            stringbuilder sb = new stringbuilder();
            while ((line = br.readline()) != null) {// 循环读取流
                sb.append(line);
            }
            br.close();// 关闭流
            connection.disconnect();// 断开连接
            system.out.println(sb.tostring());
        } catch (exception e) {
            e.printstacktrace();
            system.out.println("失败!");
        }
    }
   
    /**
     * 接口调用  post
     */
    public static void httpurlconnectionpost () {
        try {
            url url = new url(post_url);
           
            // 将url 以 open方法返回的urlconnection  连接强转为httpurlconnection连接  (标识一个url所引用的远程对象连接)
            httpurlconnection connection = (httpurlconnection) url.openconnection();// 此时cnnection只是为一个连接对象,待连接中
           
            // 设置连接输出流为true,默认false (post 请求是以流的方式隐式的传递参数)
            connection.setdooutput(true);
           
            // 设置连接输入流为true
            connection.setdoinput(true);
           
            // 设置请求方式为post
            connection.setrequestmethod("post");
           
            // post请求缓存设为false
            connection.setusecaches(false);
           
            // 设置该httpurlconnection实例是否自动执行重定向
            connection.setinstancefollowredirects(true);
           
            // 设置请求头里面的各个属性 (以下为设置内容的类型,设置为经过urlencoded编码过的from参数)
            // application/x-javascript text/xml->xml数据 application/x-javascript->json对象 application/x-www-form-urlencoded->表单数据
            connection.setrequestproperty("content-type", "application/x-www-form-urlencoded");
           
            // 建立连接 (请求未开始,直到connection.getinputstream()方法调用时才发起,以上各个参数设置需在此方法之前进行)
            connection.connect();
           
            // 创建输入输出流,用于往连接里面输出携带的参数,(输出内容为?后面的内容)
            dataoutputstream dataout = new dataoutputstream(connection.getoutputstream());
            string parm = "storeid=" + urlencoder.encode("32", "utf-8"); //urlencoder.encode()方法  为字符串进行编码
           
            // 将参数输出到连接
            dataout.writebytes(parm);
           
            // 输出完成后刷新并关闭流
            dataout.flush();
            dataout.close(); // 重要且易忽略步骤 (关闭流,切记!)
           
            system.out.println(connection.getresponsecode());
           
            // 连接发起请求,处理服务器响应  (从连接获取到输入流并包装为bufferedreader)
            bufferedreader bf = new bufferedreader(new inputstreamreader(connection.getinputstream()));
            string line;
            stringbuilder sb = new stringbuilder(); // 用来存储响应数据
           
            // 循环读取流,若不到结尾处
            while ((line = bf.readline()) != null) {
                sb.append(bf.readline());
            }
            bf.close();    // 重要且易忽略步骤 (关闭流,切记!)
            connection.disconnect(); // 销毁连接
            system.out.println(sb.tostring());
   
        } catch (exception e) {
            e.printstacktrace();
        }
    }
   
    public static void main(string[] args) {
//        httpurlconectionget();
        httpurlconnectionpost();
    }
}

希望本文所述对大家的java程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网