今天下午闲着没事做,上网随便逛逛一些免费是数据接口,偶然的看到了图灵机器人。加上最近刚刚学习用HttpURLConnection和HttpClient从网上获取数据和json数据格式的解析,心血来潮的写了与图灵机器人聊天的小程序。
package com.qianfeng.tuling;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import com.google.gson.Gson;
public class HttpConnectionTuLing {
public static TuLing getTuLing(String info) throws Exception {
Gson gson = new Gson();
URL url = new URL("http://www.tuling123.com/openapi/api?key=cf140da458a1d10803883f4c99d7efec&info=" + info
+ "&userid=126663");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置响应时间info
connection.setConnectTimeout(5000);
// 设置提交方式
connection.setRequestMethod("GET");
connection.connect();
StringBuffer buf = new StringBuffer();
if (connection.getResponseCode() == 200) {
InputStream is = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "utf-8"));
char[] b = new char[1024];
int len;
while ((len = bufferedReader.read(b)) != -1) {
buf.append(new String(b, 0, len));
}
System.out.println(buf.toString());
TuLing tuLing = gson.fromJson(buf.toString(), TuLing.class);
if( tuLing != null){
return tuLing;
}
}
return null;
}
}
package com.qianfeng.tuling;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.InetAddress;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class TuLingServer extends JFrame {
private static final long serialVersionUID = 4902403865057127055L;
private JTextArea info; // 显示聊天消息
private JTextField msg; // 发送消息的文本框
private JButton send; // 发送按钮
public TuLingServer() {
this.setTitle("图灵聊天窗口");
this.setSize(400, 300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
info = new JTextArea(10,30);
JScrollPane jsp = new JScrollPane(info);
msg = new JTextField();
send = new JButton("发送");
JPanel pnlSouth = new JPanel(new BorderLayout()); // 放置最下边的两个组件
pnlSouth.add(msg);
pnlSouth.add(send, BorderLayout.EAST);
// 添加到界面显示
this.add(jsp, BorderLayout.CENTER);
this.add(pnlSouth, BorderLayout.SOUTH);
// 添加按钮的事件监听
send.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String sendMsg = msg.getText();
String ling = "";
try {
info.append(InetAddress.getByName("localhost").getHostAddress() + "说: " + sendMsg + "\n");
msg.setText("");
} catch (Exception e1) {
e1.printStackTrace();
}
try {
TuLing tuLing = HttpConnectionTuLing.getTuLing(sendMsg);
if(tuLing != null){
ling = tuLing.getText();
if(tuLing.getCode().equals("100000")){
info.setAlignmentX(1);
info.append("图灵机器人说:" +ling +"\n");
}else if(tuLing.getCode().equals("305000")){
info.append("图灵机器人说:" +ling +"\n");
for(int i= 0; i < tuLing.getList().size(); i++){
TicketList ticketList = tuLing.getList().get(i);
info.append("trainnum: " + ticketList.getTrainnum()+"\n start: "+ticketList.getStart() +"\n terminal: " +ticketList.getTerminal() +"\n starttime: " +ticketList.getStarttime()+"\n endtime: " + ticketList.getEndtime()+"\n");
}
}
}
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
// 显示
this.setVisible(true);
}
public static void main(String[] args) {
new TuLingServer();
}
}