java调用《上海发布》接口,获取特定公交到站信息

本文介绍了一种利用Java调用上海公交API的方法,通过分析请求和响应,实现了查询759路公交车实时到站信息的功能。文章详细展示了从搜索官方API到解析JSON数据的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.目的

冬天到了,楼下759路公交一班20min,实在难受。 微信上的上海发布能看到站时间,感觉还是麻烦,所以用java调用了一下接口,需要看的时候,运行一下代码就行。偷偷懒。

2.步骤

1.搜索官网

上海发布官网

 

2.输入车辆名称

 

3.查看信息

这时候你会发现点击站台信息, 下拉框没有像在手机上面那样展开

你得切换成设备模式,在下面有切换方法

 

4.查找request请求

1.打开“检查”/ 按F12

查看

2.切换设备模式

这时候就能点开了

3.获取request

 

4.分析返回的信息

[{"@attributes":{"cod":"759\u8def"},"terminal":"\u6caaD-P0705","stopdis":"7","distance":"4302","time":"561"}]

可以确定:

返回的是json数组(有中括号)

distance是到站距离(m)

time是到站时间(s)

 

4.获得有用信息

URL


Request URL:
 https://shanghaicity.openservice.kankanews.com/public/bus/Getstop

必要传递信息

sid:应该指代具体车辆代号

stoptype: 0
stopid: 10.
sid: 7019f275eae92b302744ade1ac88763a

 

5.使用java代码请求数据

1. 公交信息实体bean

 

package com.ybj.cbt.Learn.ThinkingInJava.Ch18.FIleDownload;

import lombok.Getter;
import lombok.Setter;


@Getter
@Setter
public class BusInfo {

    String attributes;
    String terminal;
    long stopdis;
    String distance;
    String time;

    
}

 

2.java代码

注意:

返回的是JSONArray  ,是一个json对象数组,所以只能用数组解析

package com.ybj.cbt.Learn.ThinkingInJava.Ch18.FIleDownload;

import org.apache.commons.io.IOUtils;
import org.springframework.boot.configurationprocessor.json.JSONArray;
import org.springframework.boot.configurationprocessor.json.JSONObject;


import java.net.HttpURLConnection;
import java.net.URL;

/**
 * @Author getJson
 * @Description //TODO $
 * @Date $ $
 * @Param $
 * @return $
 **/
public class GetBusInfo {

    public static void main(String[] args) throws Exception {
        String path="https://shanghaicity.openservice.kankanews.com/public/bus/Getstop?stoptype=0&stopid=10.&sid=7019f275eae92b302744ade1ac88763a";
        BusInfo busInfo = HttpURLConnection_GET(path);
        System.out.println("亲,759还有"+ Long.valueOf(busInfo.getTime()) /60+"分钟到达顾戴路秀波路 ,距离:"
        +busInfo.getDistance()+"m");
    }



    public static BusInfo HttpURLConnection_GET(String path)throws Exception{
        BusInfo busInfo=new BusInfo();
        URL url=new URL(path);
        HttpURLConnection conn=(HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setConnectTimeout(5000);
        if(conn.getResponseCode()==200){
            String jsonString = IOUtils.toString(conn.getInputStream(), "utf-8");
            JSONArray jsonArray=new JSONArray(jsonString);
            for(int i=0;i<jsonArray.length();i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                busInfo.setDistance(jsonObject.getString("distance"));
                busInfo.setTime(jsonObject.getString("time"));
            }
        }
        return busInfo;
    }



}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值