用java实现一个HTTP的POST请求,对数据库表进行分类

一   前言

  需要处理的问题是:后台数据库中的表有一个src属性,该属性列有四种不同的情况,这个属性是业务相关的,只能够在源码中可以查找到。由于涉及的数据库表有700多个,所以用这个工具来对表进行分类。先对表的src属性进行统一个假设,如果HTTP请求返回的是200,则说明与假设是匹配的,如果返回的是500错误,则进行下一次筛选。

 

二    POST实现 

 

package urltest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;

public class PostTest {

    public static String sendPost(String url) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);

            URLConnection conn = realUrl.openConnection();
       /*用于装载HTTP请求的头信息,可以通过postman里面设置的信息进行填写,也可以通过查看一条正常的发送信息进行填写*/
            conn.setRequestProperty("accept", "application/json");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("Authorization", "Basic cm9vdDpwdWJsaWM=");
            conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
            conn.setUseCaches(false);

            conn.setDoOutput(true);
            conn.setDoInput(true);

            out = new PrintWriter(conn.getOutputStream());

            out.flush();

            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

    /*下面几行注释是用来接受post的返回值的代码,可以查看每一条请求返回的数据*/ // String line; // while ((line = in.readLine()) != null) { // result += line; // } result = "src = eml"; } catch (Exception e) { System.out.println("发送 POST 请求出现异常!"+e); result = "src != eml";//这个主要是用于筛选出不能够匹配的表名 return result; } finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return result; } }

 

三   测试类 

package urltest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class TestClass {


    public static void main(String[] args) {

        /* 读取数据并输出结果 */
        try {
      /*br用于读取表名,bw用于输出结果*/ BufferedReader br
= new BufferedReader(new InputStreamReader(new FileInputStream(new File("C:/Users/HZ08881/Desktop/TestTableSrc.txt")),"UTF-8")); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("C:/Users/HZ08881/Desktop/Result.txt")),"UTF-8")); String lineTxt = null; while ((lineTxt = br.readLine()) != null) { String[] urls = lineTxt.split(","); for (String url : urls) { String urlmid = "http://localhost:8181/dataview/select/c37e5169-8181-41f2-904a-afc414cb9867/"+url; String sr=PostTest.sendPost(urlmid); bw.write(url+" "+sr); bw.newLine(); } } br.close(); bw.close(); } catch (Exception e) { System.err.println("read errors :" + e); } } }

通过切换代码中的src属性,可以筛选出每一次假设的表名,从而达到每一个表匹配其对应属性的目的,不需去翻源码。

 

四   总结

  HTTP的所有请求都是可以通过java代码来进行实现的,而且可以达到自己想要的效果。postman这种工具使用起来固然方便,但是它只用一些通用的功能,对于一些特殊的情形是无法处理的。所以遇到一些需要特殊处理的HTTP请求时,可以自己设计一个发送请求的java小工具。其中需要注意的点是:header内容往往是需要根据实际情况来配置,比如Authorization,如果配置不当的话,会报401缺少权限的错误。

posted @ 2017-08-08 16:15  风雨永不休  阅读(95)  评论(0编辑  收藏  举报