Java Android应用程序从网站读取JSON
我正试图用一个显示网站信息的应用程序开始我的Android应用程序之旅。该网站来自一个电力牵引系统,它可以帮助我监测火的温度和我在吸烟者身上长时间烹饪的肉块 JSON页面位于Java Android应用程序从网站读取JSON,java,android,json,http-status-code-415,Java,Android,Json,Http Status Code 415,我正试图用一个显示网站信息的应用程序开始我的Android应用程序之旅。该网站来自一个电力牵引系统,它可以帮助我监测火的温度和我在吸烟者身上长时间烹饪的肉块 JSON页面位于http://192.168.101.101/stoker.json在我的本地网络上,数据如下所示: { "stoker": { "sensors": [ { "id": "620000116F01CA30", "name": "SS2",
http://192.168.101.101/stoker.json
在我的本地网络上,数据如下所示:
{
"stoker": {
"sensors": [
{
"id": "620000116F01CA30",
"name": "SS2",
"al": 0,
"ta": 66,
"th": 75,
"tl": 65,
"tc": 69.1,
"blower": null
},
{
"id": "E20000116F0CDB30",
"name": "brskt2",
"al": 0,
"ta": 203,
"th": 32,
"tl": 32,
"tc": 71.7,
"blower": null
}
我尝试使用的代码一直失败,因此我在流程的第一步添加了一个日志,以查看找到了什么。代码如下:
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.101.101/stoker.json");
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream webs = entity.getContent();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(webs,"iso-8859-1"),4);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
webs.close();
result=sb.toString();
Log.i("log_tag", result);
以下是调试期间日志的结果:
09-10 08:44:58.375: I/log_tag(748): <body>
09-10 08:44:58.375: I/log_tag(748): <h1>415 Unsupported Type</h1>
09-10 08:44:58.375: I/log_tag(748): </body>
09-10 08:44:58.375:I/log_标签(748):
09-10 08:44:58.375:I/log_标签(748):415不支持的类型
09-10 08:44:58.375:I/log_标签(748):
我认为读取JSON信息会非常简单,但显然不是这样。我错过了什么
在这一点上,我只想显示我的手机上的信息,没有更多。接下来,我想在应用程序中添加更多功能,比如将更改发回JSON站点和本地警报,但不是现在 看起来像是服务器端错误。您可以尝试将
HttpPost
请求更改为HttpGet
one
如果这不起作用,那么您的服务器可能正在等待请求头中的某些特定数据(有时,服务器等待特定的用户代理字段,或langage…)
您可以向我们展示生成此JSON的服务器端代码吗?尝试添加
httppost.setHeader("Accept", "application/json");
httppost.setHeader("Content-type", "application/json");
在您的案例中,表示服务器不支持请求的资源的请求方法,因为您试图使用HTTP POST方法而不是GET方法
本规范的完整定义为:
服务器拒绝为请求提供服务,因为请求实体的格式不受请求方法的请求资源支持
所以我认为你应该改用。也就是说,您应该尝试使用支持JSON对象绑定到Java类的库。有许多库封装了这一功能,这将使您的代码不那么复杂,因为您依赖于一个(希望经过良好测试的)库 看起来像。。。您从服务器得到错误的响应。 所以最后你必须检查一下为什么会这样 还有一件事你可以做…请检查 来自响应的状态代码。 您将确切了解您或服务器所犯的错误
System.out.println(response.getStatusLine().getStatusCode());
并匹配来自的响应代码
你会得到确切的……到底出了什么事 stoker.json是静态文件吗?而且不是由PHP或任何框架/工具等生成的?我建议您使用谷歌的gson。更简单、更好的示例。请检查服务器日志以查看原因。信息技术s服务器问题。结果字符串不是有效的json字符串感谢HttpGet更改,它起作用了。日志显示了正在读取的正确信息,现在在解析JSON的代码的下一节中出现了一个错误。我会继续努力,看看我自己是否能解决这个问题。如果没有,我知道我可以从这里的人们那里得到一些很好的答案。