中国和世界天气全能版 API接受到的json字符串为空 求大神解决

拾荒者101 2016-03-01 07:56:54
package com.example.dell_.weather;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

String httpUrl = "http://apis.baidu.com/heweather/pro/attractions";
String httpArg = "cityid=CN10101010018A";

public static String request(String httpUrl, String httpArg) {
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
httpUrl = httpUrl + "?" + httpArg;

try {
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("GET");
// 填入apikey到HTTP header
connection.setRequestProperty("apikey", "63768771fba86cb8f45097013d35074e");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
result = sbf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
protected void onStart() {
super.onStart();
Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String jsonResult = request(httpUrl, httpArg);
Log.i("test","1111"+jsonResult);
}
});
}
}
...全文
264 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony4geek 2016-03-02
  • 打赏
  • 举报
回复
Intboy 2016-03-02
  • 打赏
  • 举报
回复

工具测试结果正常。
结果数据如下:

{
"HeWeather data service 3.0": [
{
"basic": {
"city": "故宫博物院",
"cnty": "中国",
"id": "CN10101010018A",
"lat": "116.39",
"lon": "39.91",
"update": {
"loc": "2016-03-02 10:10",
"utc": "2016-03-02 02:10"
}
},
"daily_forecast": [
{
"astro": {
"sr": "06:45",
"ss": "18:07"
},
"cond": {
"code_d": "101",
"code_n": "101",
"txt_d": "多云",
"txt_n": "多云"
},
"date": "2016-03-02",
"tmp": {
"max": "17",
"min": "3"
},
"wind": {
"dir": "南风",
"sc": "微风"
}
},
{
"astro": {
"sr": "06:44",
"ss": "18:08"
},
"cond": {
"code_d": "101",
"code_n": "305",
"txt_d": "多云",
"txt_n": "小雨"
},
"date": "2016-03-03",
"tmp": {
"max": "15",
"min": "4"
},
"wind": {
"dir": "东北风",
"sc": "微风"
}
},
{
"astro": {
"sr": "06:42",
"ss": "18:09"
},
"cond": {
"code_d": "104",
"code_n": "101",
"txt_d": "阴",
"txt_n": "多云"
},
"date": "2016-03-04",
"tmp": {
"max": "19",
"min": "3"
},
"wind": {
"dir": "西南风",
"sc": "微风"
}
},
{
"astro": {
"sr": "06:40",
"ss": "18:10"
},
"cond": {
"code_d": "101",
"code_n": "101",
"txt_d": "多云",
"txt_n": "多云"
},
"date": "2016-03-05",
"tmp": {
"max": "11",
"min": "0"
},
"wind": {
"dir": "西北风",
"sc": "微风"
}
},
{
"astro": {
"sr": "06:39",
"ss": "18:11"
},
"cond": {
"code_d": "101",
"code_n": "101",
"txt_d": "多云",
"txt_n": "多云"
},
"date": "2016-03-06",
"tmp": {
"max": "9",
"min": "-2"
},
"wind": {
"dir": "东风",
"sc": "微风"
}
},
{
"astro": {
"sr": "06:37",
"ss": "18:12"
},
"cond": {
"code_d": "101",
"code_n": "101",
"txt_d": "多云",
"txt_n": "多云"
},
"date": "2016-03-07",
"tmp": {
"max": "8",
"min": "-1"
},
"wind": {
"dir": "北风",
"sc": "微风"
}
},
{
"astro": {
"sr": "06:36",
"ss": "18:13"
},
"cond": {
"code_d": "101",
"code_n": "101",
"txt_d": "多云",
"txt_n": "多云"
},
"date": "2016-03-08",
"tmp": {
"max": "8",
"min": "0"
},
"wind": {
"dir": "北风",
"sc": "微风"
}
}
],
"status": "ok"
}
]
}
Intboy 2016-03-02
  • 打赏
  • 举报
回复
public class HttpGetWeather
{
    private static final Log LOGGER = LogFactory.getLog(HttpGetWeather.class);

    public static void main(String[] args) throws Exception
    {
        String url = "http://apis.baidu.com/heweather/pro/attractions";
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        NameValuePair params1 = new BasicNameValuePair("cityid", "CN10101010018A");
        params.add(params1);
        // for version 4.3+
        HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
        CloseableHttpClient httpClient = httpClientBuilder.build();

        // HttpClient httpClient = new DefaultHttpClient();
        // 连接时间
        // httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,
        // connectionTimeout);
        // 数据传输时间
        // httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
        // soTimeout);
        
        // Get请求
        HttpGet httpget = new HttpGet(url);
        try
        {
            // for version 4.3+ 设置请求和传输超时时间
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000)
                    .setConnectTimeout(2000).build();
            httpget.setConfig(requestConfig);

            // 设置参数
            String str = EntityUtils.toString(new UrlEncodedFormEntity(params, Charset
                    .forName("UTF-8")));
            httpget.setURI(new URI(httpget.getURI().toString() + "?" + str));
            httpget.setHeader("apikey", "63768771fba86cb8f45097013d35074e");
            // 发送请求
            HttpResponse httpResponse = httpClient.execute(httpget);

            int statusCode = httpResponse.getStatusLine().getStatusCode();
            if (statusCode != HttpStatus.SC_OK)
            {
                LOGGER.error("Method failed:" + httpResponse.getStatusLine());
            }

            // 获取返回数据
            HttpEntity entity = httpResponse.getEntity();
            String body = EntityUtils.toString(entity, Charset.forName("UTF-8"));
            if (entity != null)
            {
                EntityUtils.consume(entity);
            }
            System.out.println(body);
        } catch (ParseException e)
        {
            throw e;
        } catch (UnsupportedEncodingException e)
        {
            throw e;
        } catch (IOException e)
        {
            throw e;
        } catch (URISyntaxException e)
        {
            throw e;
        } finally
        {
            try
            {
                // for 4.3+
                httpClient.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
            // httpget.releaseConnection();
            // httpClient.getConnectionManager().shutdown();
        }
    }
}
试试
内容概要:本文围绕“非线性流量的数据驱动Koopman模型预测控制研究”展开,提出一种基于数据驱动的Koopman算子理论方法,用于构建非线性系统的线性化状态空间模型,并结合模型预测控制(MPC)实现对复杂非线性系统的高效控制。研究通过引入扩展动态模态分解(EDMD)等观测函数,将非线性动力学映射至高维特征空间,在该空间中实现近似线性化表征,进而融合线性MPC框架进行优化解。全文系统阐述了Koopman算子的数学基础、隐式线性化机制及在非线性流量控制中的建模流程,并通过Matlab代码完成了算法实现与仿真实验,验证了该方法在处理无精确物理模型、强非线性、时变动态系统中的有效性与鲁棒性,尤其适用于工业流程控制、能源系统调度等实际工程场景。; 适合人群:具备自动控制理论、非线性系统分析基础,熟悉Matlab编程,从事控制工程、系统辨识、智能优化、能源系统建模等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于难以建立精确数学模型的复杂非线性系统(如流体动力系统、电力电子系统、机器人动力学等)的建模与实时控制;②实现数据驱动下的模型预测控制,提升系统响应速度与控制精度;③为先进控制策略(如MPC)提供一种可行的线性化建模范式,推动现代控制理论与数据科学、机器学习的深度融合。; 阅读建议:建议读者结合提供的Matlab代码深入理解Koopman方法的具体实现过程,重点关注观测函数构造、核函数选择、矩阵逼近、降维处理及MPC控制器设计等关键技术环节,并尝试将其迁移至其他非线性系统中进行复现实验与性能对比,以全面掌握其适用范围与局限性。
内容概要:本文详细介绍了一种基于Simulink的光伏储能单相逆变器并网仿真模型,系统涵盖了光伏阵列、储能单元、DC-AC单相逆变器及并网接口的完整结构,重点实现了储能环节的能量管理与逆变器并网控制策略的建模仿真。通过Simulink平台构建系统模型,验证了逆变器输出电能质量、并网稳定性以及控制系统的动态响应性能,采用SPWM调制、PI闭环控制等关键技术,确保并网电流与电网电压同频同相,满足并网电能质量要。该模型不仅可用于分布式能源系统的仿真研究,还可作为新能源并网技术的教学与工程实践工具。; 适合人群:电气工程、自动化、新能源科学与工程等相关专业的高校本科生、研究生、科研人员,以及从事光伏发电系统设计、储能控制与并网技术研发的工程技术人员。; 使用场景及目标:①深入理解光伏储能系统中能量转换、存储与并网控制的整体工作原理;②支持课程设计、毕业设计或科研项目中对单相逆变器控制策略(如SPWM、PI调节、锁相技术等)的仿真验证与参数优化;③为后续研究更复杂的控制算法(如MPPT、低电压穿越、谐波抑制等)提供可扩展的仿真基础平台。; 阅读建议:建议结合MATLAB/Simulink环境动手搭建与调试模型,逐步理解各模块(如光伏建模、储能充放电控制、逆变器驱动、锁相环、PI调节器等)的功能与交互关系,重点关注控制系统的设计逻辑与参数整定过程,并可通过修改负载条件或电网参数测试系统鲁棒性,为进一步拓展至三相系统或多机并网场景奠定基础。

67,536

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧