package fastjson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/*
* 1.URLConnection 的使用
*
* 2.fastJson 的使用
*
*/
public class connAPI {
//xml格式数据
public static void xml() throws Exception{
//参数url化
String city = java.net.URLEncoder.encode("北京", "utf-8");
//拼地址
String apiUrl = String.format("https://www.sojson.com/open/api/weather/xml.shtml?city=%s",city);
//开始请求
URL url= new URL(apiUrl);
URLConnection open = url.openConnection();
InputStream input = open.getInputStream();
//这里转换为String,带上包名,怕你们引错包
String result = org.apache.commons.io.IOUtils.toString(input,"utf-8");
//输出
System.out.println(result);
}

//json 格式
public static void json() throws Exception{
//参数url化
String city = java.net.URLEncoder.encode("北京", "utf-8");
//拼地址
String apiUrl = String.format("https://www.sojson.com/open/api/weather/json.shtml?city=%s",city);
//开始请求
URL url= new URL(apiUrl);
URLConnection open = url.openConnection();
InputStream input = open.getInputStream();
//这里转换为String,带上包名,怕你们引错包
String result = org.apache.commons.io.IOUtils.toString(input,"utf-8");
//输出
System.out.println(result);
}
public static void fastjson(){
String neturl = "https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC";
URL url;
try {
url = new URL(neturl);
StringBuffer document = new StringBuffer();
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "utf-8"));
String line = null;
while ((line = reader.readLine()) != null) {
document.append(line);
}
reader.close();
// {"date":"20180921","message":"Success !","status":200,"city":"北京","count":2,
// "data":{"shidu":"28%","pm25":13.0,"pm10":23.0,"quality":"优","wendu":"19","ganmao":"各类人群可自由活动",
// "yesterday":{"date":"20日星期四","sunrise":"05:58","high":"高温 27.0℃","low":"低温 16.0℃","sunset":"18:17","aqi":54.0,"fx":"南风","fl":"<3级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"},
// "forecast":[{"date":"21日星期五","sunrise":"05:59","high":"高温 25.0℃","low":"低温 14.0℃","sunset":"18:15","aqi":34.0,"fx":"西北风","fl":"3-4级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"22日星期六","sunrise":"06:00","high":"高温 23.0℃","low":"低温 14.0℃","sunset":"18:13","aqi":40.0,"fx":"西北风","fl":"3-4级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"23日星期日","sunrise":"06:01","high":"高温 23.0℃","low":"低温 12.0℃","sunset":"18:12","aqi":30.0,"fx":"北风","fl":"4-5级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"24日星期一","sunrise":"06:02","high":"高温 22.0℃","low":"低温 11.0℃","sunset":"18:10","aqi":37.0,"fx":"北风","fl":"<3级","type":"晴","notice":"愿你拥有比阳光明媚的心情"},
// {"date":"25日星期二","sunrise":"06:03","high":"高温 23.0℃","low":"低温 13.0℃","sunset":"18:09","aqi":52.0,"fx":"西南风","fl":"<3级","type":"晴","notice":"愿你拥有比阳光明媚的心情"}]}}

JSONObject jsonObject = JSON.parseObject(document.toString());
String date = jsonObject.getString("date");
String message = jsonObject.getString("message");
Integer status = jsonObject.getInteger("status");
String city = jsonObject.getString("city");
// 解析后面
String datas = jsonObject.getString("data");
JSONObject jb = JSON.parseObject(datas);
String shidu = jb.getString("shidu");
String wendu = jb.getString("wendu");
String ganmao = jb.getString("ganmao");
Integer pm25 = jb.getInteger("pm25");
Integer pm10 = jb.getInteger("pm10");
String quality = jb.getString("quality");

System.out.println(document);
System.out.println(date);
System.out.println(message);
System.out.println(status);
System.out.println(city);
System.out.println(datas);
System.out.println(shidu);
System.out.println(pm25);
System.out.println(pm10);
System.out.println(quality);
System.out.println(shidu);
System.out.println(wendu);
System.out.println(ganmao);

JSONArray forecast = jb.getJSONArray("forecast");
System.out.println(forecast);
for (int i = 0; i < forecast.size(); i++) {
JSONObject json = forecast.getJSONObject(i);
System.out
.println(json.getString("fl") + ":"
+ json.getString("fx") + ":"
+ json.getString("notice"));
}
String yesterday = jb.getString("yesterday");
JSONObject yjb = JSON.parseObject(yesterday);
System.out.println(yjb.toString());
String date2 = yjb.getString("date");
String sunrise = yjb.getString("sunrise");
System.out.println(date2);
System.out.println(sunrise);

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//fastjson();
try {
//xml();
json();
} catch (Exception e) {
e.printStackTrace();
}
}
}

API调用开发demo的更多相关文章

  1. WO+开放平台:API调用开发手记(话费计费接口2.0)

    WO+能力共享平台(http://open.wo.com.cn)是中国联通推出的开放平台.拥有的丰富电信能力资源以及深度整合挖掘的第三方能力资源等.WO+平台提供的API均为简洁优雅的RESTful风 ...

  2. novaclient的api调用流程与开发

    novaclient的api调用流程与开发 2015年07月05日 19:27:17 qiushanjushi 阅读数:3915   http://blog.csdn.net/tpiperatgod/ ...

  3. 如何用Baas快速在腾讯云上开发小程序-系列3 :实现腾讯云COS API调用

    版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/640268001487425627 来源:腾云阁 h ...

  4. 【Qt编程】基于Qt的词典开发系列&lt;八&gt;--用户登录及API调用的实现

    在上一篇文章<调用网络API>中,我仅仅讲述了怎样直观的使用API接口以及调用API后返回的结果,本文则从程序实现的角度来实现API的调用.当然本程序的实现也是借助于扇贝网的API接口文档 ...

  5. api 接口开发理论 在php中调用接口以及编写接口

    如: http://localhost/openUser.php?act=get_user_list&type=json 在这里openUser.php相当于一个接口,其中get_user_l ...

  6. ABP开发框架前后端开发系列---(10)Web API调用类的简化处理

    在较早期的随笔<ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用>已经介绍了Web API调用类的封装处理,虽然这些调用类我们可以使用代码生成工具快 ...

  7. ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用

    在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计,使得我们基于ABP框架的整体方案越来越清晰化, 也越来越接近实际的项目开 ...

  8. ABP开发框架前后端开发系列---(4)Web API调用类的封装和使用

    在前面随笔介绍ABP应用框架的项目组织情况,以及项目中领域层各个类代码组织,以及简化了ABP框架的各个层的内容,使得我们项目结构更加清晰.上篇随笔已经介绍了字典模块中应用服务层接口的实现情况,并且通过 ...

  9. Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用

    概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用.这个应用始终遗留了一个问题,Web App在访问REST AP ...

随机推荐

  1. shell脚本,按单词出现频率降序排序。

    [root@localhost oldboy]# cat file the squid project provides a number of resources toassist users de ...

  2. oracle count 百万级 分页查询记要总数、总条数优化

    oracle count 百万级 分页查询记录总数.总条数优化 oracle count 百万级 查询记录总数.总条数优化 最近做一个项目时,做分页时,发现分页查询速度很慢,分页我做的是两次查询,一次 ...

  3. Mac 输入法小技巧

    相信使用Mac的朋友第一次使用Mac首先要考虑的就是输入法的问题,现在越来越多的第三方输入法都开始支持Mac平台,是否有同学仍然执着于看似“不符”国人习惯用法的OS X自带拼音输入法呢?自带的拼音输入 ...

  4. mysqldump 备份导出数据排除某张表或多张表

    可以使用--ignore-table=dbname.tablename 忽略一张表 /usr/bin/mysqldump --set-gtid-purged=OFF -h127.0.0.1 -uroo ...

  5. vue-music:歌词的其他功能

    由于歌词的播放需要歌曲播放,切换歌曲,歌曲的播放模式等等有关联,因此,需要在这几处处理相关问题 1.循环播放回不到开始位置 loop() { this.$refs.audio.currentTime ...

  6. 解决 mounting /dev/block/mmcblk0p1 on /sdcard failed

    http://www.liyu8.com/article/sdcard.htm 之前在recovery下的adb shell执行mount -a总是会有 mount: mouting /dev/blo ...

  7. 【MySQL】可重复读模式下 unique key失效案例

    一 [背景]   今天上午文能提笔安天下,武能上马定乾坤的登博给团队出了一道题目,谁先复现问题,奖励星巴克一杯.激起了一群忙碌的屌丝DBA的极大热情.问题是这样滴,如下图登博提示了几个细节:   1. ...

  8. Java面试——String、StringBuider以及StringBuffer的区别和使用场景

    1.  String.StringBuider.StringBuffer的区别  String是不可变的对象,因此在每次对String类型进行改变的时候,都会生成一个新的String对象,然后将指针指 ...

  9. Android开发工具——Gradle知识汇总

    1.什么是构建工具 Eclipse大家都知道是一种IDE(集成开发环境),最初是用来做Java开发的,而Android是基于Java语言的,所以最初Google还是希望Android能在Eclipse ...

  10. Java-字符串大小写转换

    package com.tj; public class MyClass implements Cloneable { public static void main(String[] args) { ...