源码如下:

package com.wyl.jqr;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLEncoder;import com.example.tulinjiqiren.R;import com.google.gson.Gson;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.ActionBarActivity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends ActionBarActivity {Button btn;Button btn2;EditText et;TextView tv;myHandler handler = new myHandler();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = (Button)findViewById(R.id.btn01);btn2 = (Button)findViewById(R.id.btn02);et = (EditText)findViewById(R.id.editText01);tv = (TextView)findViewById(R.id.textview02);//用来赋值MyOnclickListener l = new MyOnclickListener();btn.setOnClickListener(l);btn2.setOnClickListener(l);}class MyOnclickListener implements OnClickListener{@Overridepublic void onClick(View view) {if(view.getId()==R.id.btn01){//1.获取录入的问题String question = et.getText().toString();//2.访问网络//主线程不能够访问网络,由此,需要借助开启新线程和handler的方式myThread myThread = new myThread();myThread.start();System.out.println("发送请求的线程:"+Thread.currentThread().getName());}else if(view.getId()==R.id.btn02){//清空edittextSystem.out.println("清楚的线程:"+Thread.currentThread().getName());et.setText("");}}}class myHandler extends Handler{@Overridepublic void handleMessage(Message msg) {String daan = (String)msg.obj;if(daan == "" || daan.equals(null)){daan = "暫時不支持該轉換";}System.out.println("myHandler()方法的线程:"+Thread.currentThread().getName());tv.setText(daan);}}class myThread extends Thread{@Overridepublic void run() {//访问网络System.out.println("run()的线程:"+Thread.currentThread().getName());String APIKEY = "e59219b3f450256c2a3da7157ae651f2";     String INFO;    String getURL;    URL getUrl;    String question = et.getText().toString();//获取前台的问题    try {INFO = URLEncoder.encode(question, "utf-8");//需要改造getURL = "http://www.tuling123.com/openapi/api?key=" + APIKEY + "&info=" + INFO;     getUrl = new URL(getURL);     HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();     connection.connect();     // 取得输入流,并使用Reader读取     BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "utf-8"));     StringBuffer sb = new StringBuffer();     String line = "";     while ((line = reader.readLine()) != null) {         sb.append(line);     }     reader.close();     // 断开连接     connection.disconnect();     System.out.println("获取到的答案"+sb);    //sb是json格式的,需要做轉化,    Gson gson = new Gson();    String sb2 = sb.toString();    System.out.println("sb2的值:"+sb2);    myBean rtn = gson.fromJson(sb2, myBean.class);    System.out.println("rtn的值:"+rtn);    String text = rtn.getText();    System.out.println("text的值:"+text);    //因为本线程workThread,不能够直接把值返回到UI中,所以把答案放到队列里,    Message msg = handler.obtainMessage();    msg.obj = text;//把轉化後的答案綁定到msg上    handler.sendMessage(msg);} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}     }}}

  myBean.java

因为用到了Gson来解析,所以根据返回的json字符串的key来写一个bean。

package com.wyl.jqr;public class myBean {String code;String text;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getText() {return text;}public void setText(String text) {this.text = text;}}

  

  

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. 获取Android(安卓)Device的信息
  3. 九宫格
  4. android获取本地视频路径
  5. Android(安卓)中的 Looper 对象
  6. 线程池的封装和使用(二)
  7. Android(安卓)Battery一些信息获取方法
  8. Android中对后台任务线程性能的说明及优化
  9. Android(安卓)studio 简单的多线程

随机推荐

  1. Mysql数据库从5.6.28版本升到8.0.11版本
  2. Mysql 常用的时间日期及转换函数小结
  3. Mysql注入中的outfile、dumpfile、load_f
  4. MYSQL的存储过程和函数简单写法
  5. win10 下安装mysql服务器社区版本mysql 5
  6. 教你如何在Mac上安装mysql数据库
  7. MySql中如何使用 explain 查询 SQL 的执
  8. Mac 下 MySQL5.7.22的安装过程
  9. JDBC连接MySQL5.7的方法
  10. MySQL 8 新特性之Invisible Indexes