关闭

Java编写的接口测试工具

标签: java测试工具数据网络json
12494人阅读 评论(0) 收藏 举报
分类:

这几天由于要频繁地使用一些天气数据接口,但是每次都要频繁的打开网页,略显繁琐,故就自己做了两个json数据获取的小工具。


  • 第一个

先来看看第一个吧,思路是使用一个网络流的处理,将返回的json字符串数据输出到屏幕上,代码如下:

package Simple;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

public class JsonTools extends JFrame{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JTextField tf=null;
    JButton button=null,clear=null;
    JTextArea ta=null;

    public JsonTools(){
        tf=new JTextField(28);
        button=new JButton("submit");
        clear=new JButton("Clear");
        ta=new JTextArea();
        init();
        button.addActionListener(new MyActionListener());
        clear.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                tf.setText("");
                ta.setText("\t\t\tThis TextArea has been Cleared! \n\n\t\t\tYou can begin your next test!");
                tf.grabFocus();
            }
        });
    }

    public static void main(String []args){
        new JsonTools();
    }

    @SuppressWarnings("deprecation")
    public void init(){
        this.setTitle("Json 字符串获取工具");
        this.setSize(800,450);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);

        JScrollPane js=new JScrollPane(ta);
        js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

        JPanel p=new JPanel();
        p.setLayout(new FlowLayout());
        p.add(new JLabel("URL:"));
        p.add(tf);
        p.add(button);
        p.add(clear);
        tf.setFocusable(true);
        button.setNextFocusableComponent(tf);

        this.add(p,BorderLayout.NORTH);
        this.add(js,BorderLayout.CENTER);
    }

    public static String getJsonString(String url){
        String result="";
        URLConnection conn=null;
        BufferedReader reader=null;
        try{
            URL website=new URL(url.trim());
            conn=(URLConnection) website.openConnection();
            reader=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));

            String line="";
            StringBuffer sb=new StringBuffer();
            while((line=reader.readLine())!=null){
                sb.append(line);
            }

            result=sb.toString();
        }catch(MalformedURLException urlException){
            result+=urlException.getMessage();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            result+=e.getMessage();
            e.printStackTrace();
        }catch(Exception total){
            result+=total.getMessage();
            total.printStackTrace();
        }finally{
            if(conn!=null){
                conn=null;
            }
            if(reader!=null){
                try {
                    reader.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    result+=e.getMessage();
                    e.printStackTrace();
                }
                reader=null;
            }
        }
        return result;
    }

    class MyActionListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            String jsonString=getJsonString(tf.getText().trim().toString());
            ta.setText(jsonString);
        }

    }
}

下面看一下运行结果吧:
第一种方式的截图


  • 第二种
    第二种主要是调用了java的内核处理机制,这就省去了我们自定义方法处理网络流数据信息了。代码如下:
package WebBase;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class JEditPaneToWebView extends JFrame{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    JTextField tf=null;
    JButton test=null,clear=null;
    JEditorPane editorPane =null;

    public JEditPaneToWebView(){
        tf=new JTextField(28);
        test=new JButton("submit");
        clear=new JButton("Clear");
        init();
        test.addActionListener(new MyActionListener());
        clear.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                tf.setText("");
                editorPane.setText("<body align='center'>\t\t\tThis TextArea has been Cleared! <BT><BR><br>\t\t\tYou can begin your next test!</body>");
                tf.grabFocus();
            }

        });
    }

    public static void main(String []args){
        new JEditPaneToWebView();
    }

    @SuppressWarnings("deprecation")
    public void init(){
        this.setTitle("Json 字符串获取工具 WebView");
        this.setSize(800,450);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);

        editorPane=new JEditorPane();
        editorPane.setEditable(false);
        editorPane.setBackground(Color.WHITE);
        JScrollPane scrollPane = new JScrollPane(editorPane,
                                 JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                                 JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

        JPanel p=new JPanel();
        p.setLayout(new FlowLayout());
        p.add(new JLabel("URL:"));
        p.add(tf);
        p.add(test);
        p.add(clear);
        tf.setFocusable(true);
        test.setNextFocusableComponent(tf);

        this.add(p,BorderLayout.NORTH);
        this.add(scrollPane,BorderLayout.CENTER);
    }

    class MyActionListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
//          http://www.weather.com.cn/data/cityinfo/101010100.html
            editorPane.setContentType("text/html;charset=utf-8");
            try {
                editorPane.setPage(tf.getText().trim().toString());
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }

    }
}

下面来看一下程序运行的结果吧:
第二种方式截图
其实获取json数据只是其优点的一点点,下面的截图便可以证明JEditPane的强大
第二种方式截图


//你可以在下面的链接中找到这两款工具[下载地址](http://download.csdn.net/detail/marksinoberg/9288665),希望能帮到你。

  • 总结:
    虽然做的这两个软件没什么大的用处,但是确实让我看到了许多组件的强大之处。这其实也是砸告诫我们,要多学习,多看API文档,才能熟能生巧。如果有哪里做得不好的话,还望广大博友不吝赐教,让我们一起进步吧!
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

用java开发简易接口测试工具

简易接口测试工具,类似postman: 1.功能特点: 支持多种请求头:ie firefox chrome iphone android 支持自动登录后测试 测试接口网址和参数自动记忆 2.界面截图:...
  • zzw222222
  • zzw222222
  • 2015-11-13 13:31
  • 1861

webservice接口测试工具

  • 2017-08-21 15:07
  • 3.11MB
  • 下载

RestFul接口测试工具

  • 2016-11-27 19:58
  • 14.71MB
  • 下载

接口测试的一些感悟

转载地址:https://testerhome.com/topics/3701   接口测试的目的 这个算是老生常谈了,但我觉得只要聊到接口这个还是绕不过的,没有目标就没有评判标准,所以测试的目...
  • wanglha
  • wanglha
  • 2015-12-16 18:36
  • 5343

接口测试(api测试)java代码测试

public class apitest { @Test public void testr() throws ClientProtocolException, IOExcep...
  • qgesxcll
  • qgesxcll
  • 2017-01-23 17:01
  • 4611

java接口压力测试

根据用户输入的线程数,创建多个线程,每个线程串行的发送n/c个请求(其中n为请求数,m为线程数)。并且实时的反馈,完成的请求数,以及成功接收返回结果的请求数量。
  • lanxiangru
  • lanxiangru
  • 2017-05-09 21:23
  • 2464

Java接口测试java代码

//1.新建一个客户端对象 CloseableHttpClient client=HttpClients.createDefault(); //2.使用URLBuilder工具类构造一个get类型...
  • douyunqian668
  • douyunqian668
  • 2017-04-15 16:38
  • 686

Http接口测试工具HttpTestTool

  • 2014-03-27 12:58
  • 929KB
  • 下载

Java代码实现接口测试

CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpget = new HttpGet("http:/...
  • happymff
  • happymff
  • 2017-08-08 23:19
  • 616

java post接口测试代码

package com.example.day02; import java.io.IOException; import java.util.ArrayList; import jav...
  • douyunqian668
  • douyunqian668
  • 2017-04-16 11:37
  • 850
    个人资料
    • 访问:3171714次
    • 积分:34407
    • 等级:
    • 排名:第153名
    • 原创:353篇
    • 转载:35篇
    • 译文:9篇
    • 评论:707条
    友情链接
    我的偶像
    个人主页
      GitHub
    放松一下
    博客专栏
    最新评论
    版权信息
    去除本页广告
    图片炸弹装填中...

        
    [img=赞一个]http://bpic.588ku.com/element_origin_min_pic/16/12/12/0d96da96cf36505736c09d63832eaac8.jpg[/img]