webservice测试

package com.test;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.security.cert.CertificateException;
import javax.security.cert.X509Certificate;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class SendData extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;

	JPanel panel = new JPanel();
	JLabel label0 = new JLabel("URL:");
	JLabel label1 = new JLabel("Request Info:");
	JLabel label2 = new JLabel("Result:");
	JTextField urlField = new JTextField();
	JTextArea sendArea = new JTextArea();
	JTextArea resultArea = new JTextArea();
	JButton button1 = new JButton("Execute");
	JButton button2 = new JButton("Exit");

	public SendData() {
		panel.setLayout(null);
		label0.setBounds(10, 10, 80, 20);
		label1.setBounds(10, 40, 80, 50);
		label2.setBounds(10, 250, 80, 20);
		urlField.setBounds(110, 10, 800, 25);
		sendArea.setBounds(110, 40, 800, 200);
		// sendArea.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
		resultArea.setBounds(110, 250, 800, 200);
		// resultArea.setBorder(BorderFactory.createLineBorder(Color.gray, 1));

		sendArea.setWrapStyleWord(true);// 激活自动换行功能
		sendArea.setLineWrap(true);// 激活断行不断字功能
		resultArea.setWrapStyleWord(true);
		resultArea.setLineWrap(true);

		button1.setBounds(300, 500, 80, 30);
		button2.setBounds(500, 500, 80, 30);

		JScrollPane scroll = new JScrollPane(sendArea);
		scroll.setBounds(110, 40, 800, 200);
		// scroll.setHorizontalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		JScrollPane scroll2 = new JScrollPane(resultArea);
		scroll2.setBounds(110, 250, 800, 200);
		// scroll2.setHorizontalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		scroll2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		panel.add(scroll);
		panel.add(scroll2);

		panel.add(label0);
		panel.add(label1);
		panel.add(label2);
		panel.add(urlField);
		//http://nkweb-uat.huawei.com/tpwms/services/queryByImei
		urlField.setText("http://nkweb-uat.huawei.com/tpwms/services/queryByImei");
		// panel.add(sendArea);
		// panel.add(resultArea);

		panel.add(button1);
		panel.add(button2);

		button1.addActionListener(this);
		button2.addActionListener(this);

		add(panel, BorderLayout.CENTER);
		this.setTitle("webservice test tool");
	}

	public void actionPerformed(ActionEvent e) {
				
		if (e.getSource() == button1) {
			if (sendArea.getText().trim().equals("")) {
				JOptionPane.showMessageDialog(null, "Plase input send Data", "Message", JOptionPane.ERROR_MESSAGE);
				return;
			}
			String result = null;
			try {
				result = doSendData(urlField.getText(), sendArea.getText());
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			resultArea.setText(result);
		}
		if (e.getSource() == button2) {
			System.exit(0);
		}

	}

	public static void main(String args[]) {
		System.setProperty("file.encoding","utf-8");
		SendData login = new SendData();
		login.setDefaultCloseOperation(SendData.EXIT_ON_CLOSE);
		login.setSize(1000, 600);
		login.setVisible(true);
	}

	/**
	 * 发送报文,等待响应结果
	 * @throws IOException 
	 */
	private static String doSendData(String url, String sendData) throws IOException {
		HttpURLConnection conn = null;
		OutputStream outPutStream = null;
		Writer writer = null;
		BufferedReader br = null;

		try {
			// 获取连接
			conn = getURLConnection(url, "POST");
			conn.setRequestProperty("Content-Type", "text/xml");
            conn.connect();  
			outPutStream = conn.getOutputStream();
			writer = new OutputStreamWriter(outPutStream, "UTF-8");
			// 发送报文
			writer.write(sendData);
			writer.flush();

			br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
			// 获取URL返回的结果
			StringBuilder sb = getMessageFromReader(br);
			String str = sb.toString();
			//System.out.println("result: " + str);
			
			//格式化后 写入到文件
			Document doc = DocumentHelper.parseText(str);           	
			OutputFormat format = new OutputFormat("    ", true, "UTF-8");
			format.setTrimText(true);
			format.setLineSeparator("\n");
	
			XMLWriter output = new XMLWriter(new FileWriter(new File("response\\response.xml")), format);							
			output.write(doc);
			output.close();
	        
			//重新读取格式化后的文件
			SAXReader reader = new SAXReader();
			Document document = reader.read(new File("response\\response.xml"));
			String result= document.asXML();
			System.out.println("result: " + result);
		
			System.out.println("--------------Response Code:"+ conn.getResponseCode());
			return result;

		} catch (Exception e) {
			System.out.println("--------------Response Code:"+ conn.getResponseCode());
			e.printStackTrace();
		}
		finally{			

		}
		return null;
	}

	/**
	 * 创建HTTP连接
	 * 
	 * @throws NoSuchAlgorithmException
	 * @throws KeyManagementException
	 */
	private static HttpURLConnection getURLConnection(String serviceUrl, String restMethod)
			throws MalformedURLException, IOException, ProtocolException, NoSuchAlgorithmException,
			KeyManagementException {

		String http = serviceUrl.split(":")[0];

		if (http.equalsIgnoreCase("http")) {
           
			URL url = new URL(serviceUrl);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setRequestMethod(restMethod);
			conn.setReadTimeout(100000);
            conn.setConnectTimeout(100000);
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setUseCaches(false);
            
			return conn;

		} else if (http.equalsIgnoreCase("https")) {
			URL url = new URL(serviceUrl);
			HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
			conn.setRequestMethod(restMethod);
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setUseCaches(false);
            conn.setReadTimeout(100000);
            conn.setConnectTimeout(100000);
			SSLContext sc = SSLContext.getInstance("SSL");
			sc.init(null, new TrustManager[] { new iTrustManager() }, new java.security.SecureRandom());
			conn.setSSLSocketFactory(sc.getSocketFactory());

			return conn;
		}

		return null;

	}

	static class iTrustManager implements X509TrustManager {
		iTrustManager() {
		}

		// check client trust status
		public void checkClientTrusted(X509Certificate chain[], String authType) throws CertificateException {
			System.out.println("check client trust status");
		}

		// check Server trust status
		public void checkServerTrusted(X509Certificate chain[], String authType) throws CertificateException {
			System.out.println("check Server trust status");
		}

		@Override
		public void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
				String paramString) throws java.security.cert.CertificateException {

		}

		@Override
		public void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
				String paramString) throws java.security.cert.CertificateException {
		}

		@Override
		public java.security.cert.X509Certificate[] getAcceptedIssuers() {
			return null;
		}

	}

	/**
	 * 读取返回结果
	 */
	private static StringBuilder getMessageFromReader(BufferedReader br) throws IOException {
		StringBuilder sb = new StringBuilder();
		String returnStrItem = null;
		while ((returnStrItem = br.readLine()) != null) {
			sb.append(returnStrItem);
		}

		return sb;
	}
}

 

你可能感兴趣的:(webservice)