dabocaiqq 2020-07-15 12:57 采纳率: 63.2%
浏览 151
已采纳

Java语言怎么获取网上的天气预报的网页内容,随便选择一个城市编写一个例子代码给我,快

Java语言怎么获取网上的天气预报的网页内容,随便选择一个城市编写一个例子代码给我,快

  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2020-08-07 13:47
    关注
    package juheAPI;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.Map;
    /**
     * 网络访问工具类
     * @author silk
     *
     */
    public class PureNetUtil {
        /**
         * get方法直接调用post方法
         * @param url 网络地址
         * @return 返回网络数据
         */
        public static String get(String url){
            return post(url,null);
        }
        /**
         * 设定post方法获取网络资源,如果参数为null,实际上设定为get方法
         * @param url 网络地址
         * @param param 请求参数键值对
         * @return 返回读取数据
         */
       public static  String post(String  url,Map   param){
            HttpURLConnection conn=null;
            try {
                URL u=new URL(url);
                conn=(HttpURLConnection) u.openConnection();
                StringBuffer sb=null;
                if(param!=null){//如果请求参数不为空
                    sb=new StringBuffer();
                    /*A URL connection can be used for input and/or output.  Set the DoOutput
                     * flag to true if you intend to use the URL connection for output,
                     * false if not.  The default is false.*/
                    //默认为false,post方法需要写入参数,设定true
                    conn.setDoOutput(true);
                    //设定post方法,默认get
                    conn.setRequestMethod("POST");
                    //获得输出流
                    OutputStream out=conn.getOutputStream();
                    //对输出流封装成高级输出流
                    BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));
                    //将参数封装成键值对的形式
                    for(Map.Entry s:param.entrySet()){
                        sb.append(s.getKey()).append("=").append(s.getValue()).append("&");
                    }
                    //将参数通过输出流写入
                    writer.write(sb.deleteCharAt(sb.toString().length()-1).toString());
                    writer.close();//一定要关闭,不然可能出现参数不全的错误
                    sb=null;
                }
                conn.connect();//建立连接
                sb=new StringBuffer();
                //获取连接状态码
                int recode=conn.getResponseCode();
                BufferedReader reader=null;
                if(recode==200){
                    //Returns an input stream that reads from this open connection
                    //从连接中获取输入流
                    InputStream in=conn.getInputStream();
                    //对输入流进行封装
                    reader=new BufferedReader(new InputStreamReader(in));
                    String str=null;
                    sb=new StringBuffer();
                    //从输入流中读取数据
                    while((str=reader.readLine())!=null){
                        sb.append(str).append(System.getProperty("line.separator"));
                    }
                    //关闭输入流
                    reader.close();
                    if (sb.toString().length() == 0) {
                        return null;
                    }
                    return sb.toString().substring(0,
                            sb.toString().length() - System.getProperty("line.separator").length());
                }
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }finally{
                if(conn!=null)//关闭连接
                    conn.disconnect();
            }
            return null;
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测