我正在尝试使用应用程序开始我的Android应用程序之旅,以显示来自网站的信息。该网站来自一个强大的草案系统,可以帮助我监控我在吸烟者身上长时间烹饪的火焰和肉块的温度。
JSON页面位于我本地网络的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>
我认为阅读JSON信息非常简单,但显然不是。我在这里缺少什么?
此时我只想在手机上显示信息,仅此而已。在路上我想为应用添加更多功能,例如将更改发布回JSON站点和本地警报,但现在不行。
答案 0 :(得分:1)
它看起来像服务器端错误。您可以尝试将HttpPost
请求更改为HttpGet
。
如果这不起作用,那么您的服务器可能正在等待请求标头中的某些特定数据(有时,服务器会等待特定的User-agent字段或langage ...)
您能告诉我们生成此JSON的服务器端代码吗?
答案 1 :(得分:1)
HTTP Status 415 - Unsupported Media Type表示服务器不支持所请求资源的请求方法,因为您尝试使用HTTP POST方法而不是GET。
规范中的完整定义是:
服务器拒绝为请求提供服务,因为请求的实体采用所请求方法所请求资源不支持的格式
所以我认为你应该使用HTTPGet代替。也就是说,您应该尝试使用支持将JSON对象绑定到Java类的库。有很多库封装了这个功能,应该使你的代码不那么复杂,因为你依赖的是一个(希望经过充分测试的)库。
答案 2 :(得分:0)
尝试添加
httppost.setHeader("Accept", "application/json");
httppost.setHeader("Content-type", "application/json");
答案 3 :(得分:0)
看起来......你从服务器得到了错误的响应。 所以最后你必须检查为什么会如此
你可以做的另一件事......请检查 来自响应的状态代码。 您将准确了解您或服务器正在执行的错误。
System.out.println(response.getStatusLine().getStatusCode());
并匹配您的响应代码 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
你会得到确切的.........什么是错的......