国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - IP查詢系統(tǒng)的異步回調(diào)案例

IP查詢系統(tǒng)的異步回調(diào)案例

2020-08-12 11:15沁宇 Java教程

本文主要分享了IP查詢系統(tǒng)的異步回調(diào)案例,具有很好的參考價(jià)值,下面跟著小編一起來看下吧

話不多說,請(qǐng)看代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.lxj.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class Http extends Thread{
  // 下載結(jié)束的回調(diào)接口
  public interface IResult{
    void success(String msg);
    void fail(String msg);
  }
  // 創(chuàng)建網(wǎng)絡(luò)地址的引用
  String addr;
  // 創(chuàng)建回調(diào)接口的引用
  IResult iResult ;
  // 生成構(gòu)造方法把網(wǎng)絡(luò)和接口的引用傳進(jìn)去
  public Http(String addr, IResult iResult) {
    super();
    this.addr = addr;
    this.iResult = iResult;
    // 開啟線程 線程一開啟就產(chǎn)生了異步
    start();
  }
  @Override
  // 重寫線程的run方法,只要是網(wǎng)絡(luò)就要用到多線程
  public void run() {
    try {
      // 創(chuàng)建URL,把網(wǎng)絡(luò)地址傳進(jìn)去
      URL url = new URL(addr);
      try {
        // 利用字符緩沖讀取流讀取網(wǎng)絡(luò)數(shù)據(jù)
        BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
        // 創(chuàng)建stringbuffer對(duì)象
        StringBuffer sb = new StringBuffer();
        // 創(chuàng)建一個(gè)臨時(shí)儲(chǔ)存字符串的變量
        String temp;
        // 當(dāng)temp不為空是就一直讀取數(shù)據(jù)
        while ((temp = br.readLine()) != null) {
          sb.append(temp);
        }
        // 數(shù)據(jù)讀取成功后
        // 把讀取的所有數(shù)據(jù)傳到回調(diào)接口,再由接口傳出去
        iResult.success(sb.toString());
      } catch (IOException e) {
        e.printStackTrace();
      }
    } catch (MalformedURLException e) {
      e.printStackTrace();
      // 網(wǎng)絡(luò)請(qǐng)求發(fā)生異常
      iResult.fail("網(wǎng)絡(luò)請(qǐng)求失敗");
    }
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.lxj.demo;
import net.sf.json.JSONObject;
import com.xykj.demo.Http.IResult;
public class IPRequest {
  // 請(qǐng)求IP信息的回調(diào)接口,在這里必須要使用回調(diào),因?yàn)椴恢繦ttp什么時(shí)候下載完成
  public interface IRequest{
    void success(IPBean ipBean);
    void fail(String msg);
  }
  // 只要給一個(gè)ip地址和回調(diào)接口,我們可以通過回調(diào)接口傳回轉(zhuǎn)化好的ip信息對(duì)象
  public void request(String IP,IRequest iRequest){
    // 把用戶輸入的ip地址拼接到url中,發(fā)起Http請(qǐng)求
    String addr ="http://apicloud.mob.com/ip/query?key=520520test&ip="
        + IP
        + "";
    new Http(addr, new IResult() {
      // 創(chuàng)建完的IResult success和fail不會(huì)馬上調(diào)用,必須要等到Http下載完成或者發(fā)生異常才會(huì)調(diào)用
      @Override
      public void success(String msg) {
        // 把接收的json數(shù)據(jù)轉(zhuǎn)化成IPBean對(duì)象
        JSONObject jsonObject = JSONObject.fromObject(msg);
        IPBean ipBean = (IPBean) JSONObject.toBean(jsonObject, IPBean.class);
        // 產(chǎn)生回調(diào),把轉(zhuǎn)化好的對(duì)象傳遞出去給Demo
        iRequest.success(ipBean);
      }
      @Override
      public void fail(String msg) {
        // Http請(qǐng)求失敗的時(shí)候
        iRequest.fail(msg);
      }
    });
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.lxj.demo;
public class IPBean {
  public static class Result{
    private String city;
    private String country;
    private String ip;
    private String province;
    public String getCity() {
      return city;
    }
    public void setCity(String city) {
      this.city = city;
    }
    public String getCountry() {
      return country;
    }
    public void setCountry(String country) {
      this.country = country;
    }
    public String getIp() {
      return ip;
    }
    public void setIp(String ip) {
      this.ip = ip;
    }
    public String getProvince() {
      return province;
    }
    public void setProvince(String province) {
      this.province = province;
    }
    @Override
    // 這里必須要重寫toString方法,否則將打印的內(nèi)存里面的地址
    public String toString() {
      return "city:" + city + "\ncountry:" + country + "\nip:"
          + ip + "\nprovince:" + province;
    }
  }
  Result result;
  private String msg;
  private String retCode;
  public Result getResult() {
    return result;
  }
  public void setResult(Result result) {
    this.result = result;
  }
  public String getMsg() {
    return msg;
  }
  public void setMsg(String msg) {
    this.msg = msg;
  }
  public String getRetCode() {
    return retCode;
  }
  public void setRetCode(String retCode) {
    this.retCode = retCode;
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.lxj.demo;
import java.util.Scanner;
import com.xykj.demo.IPRequest.IRequest;
public class Demo {
  public static void main(String[] args) {
    System.out.println("************歡迎使用IP查詢系統(tǒng)************");
    Scanner sc = new Scanner(System.in);
    // 創(chuàng)建IPRequest對(duì)象
    IPRequest ipRequest = new IPRequest();
    while (true) {
      System.out.println("請(qǐng)輸入要查詢的IP:");
      String ip = sc.next();
      // 調(diào)用IPRequest里面的request方法
      ipRequest.request(ip, new IRequest() {
        @Override
        public void success(IPBean ipBean) {
          System.out.println("*************查詢結(jié)果*************");
          System.out.println(ipBean.getResult());
        }
        @Override
        public void fail(String msg) {
          System.out.println(msg);
        }
      });
    }
  }
}

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持服務(wù)器之家!

原文鏈接:http://www.cnblogs.com/lxjhoney/p/6405194.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 97超碰免费| 亚洲一区二区三区精品动漫 | 99精品国产一区二区青青牛奶 | 欧美久久久久久久久久久 | 精品国产乱码久久久久久丨区2区 | 欧美精品国产精品 | 国产精品一码二码三码在线 | 伊人网视频| 羞羞的视频在线免费观看 | 黄色直接看 | 国产精品美女久久久久久免费 | 亚洲aⅴ天堂av在线电影软件 | 韩国一区二区视频 | 亚洲精品乱码久久久久久久久 | 在线a视频 | 一级免费av | 国产精品成人一区二区三区夜夜夜 | 精品欧美一区二区三区久久久 | 国产精品自在线 | 刺激网| 成人国产精品视频 | 日韩成人免费 | 久久网页| 黄色免费看片网站 | 中文字幕视频一区 | 亚洲精品一区在线观看 | 特黄视频免费观看 | 午夜精品视频 | 日韩中文在线 | 成人精品一区二区三区中文字幕 | 久久久久中文字幕 | 久久久www| 国产一区二区三区播放 | 国色天香成人网 | 成人在线免费视频 | 小川阿佐美88av在线播放 | 精品国产乱码久久久久久影片 | 亚洲电影在线播放 | av影院在线观看 | 亚洲+变态+欧美+另类+精品 | 久一在线 |