Android httpclient 请求和实体处理
Posted
技术标签:
【中文标题】Android httpclient 请求和实体处理【英文标题】:Android httpclient request and processing with entity 【发布时间】:2012-04-29 04:49:38 【问题描述】:我向我的 servlet 发出请求
尝试 Log.d(Constants.DEBUG_TAG_MAPS, "try"); HttpEntity 实体 = 新 StringEntity(json); post.setEntity(实体); HttpParams httpParameters = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParameters, 15000); HttpConnectionParams.setSoTimeout(httpParameters, 150000); httpclient = new DefaultHttpClient(httpParameters); BasicHttpResponse response = (BasicHttpResponse) httpclient.execute(post); Log.d(Constants.DEBUG_TAG_MAPS, "http 状态码:"+response.getStatusLine().getStatusCode()); if(response.getStatusLine().getStatusCode() == 200) Log.d(Constants.DEBUG_TAG_MAPS, "响应 200"); HttpEntity responseEntity = response.getEntity(); if (responseEntity!= null) Gson g = 新 Gson(); InputStream 是 = responseEntity.getContent(); InputStreamReader isr = new InputStreamReader(is); BufferedReader reader = new BufferedReader(isr); 尝试 responseEntity.getContent(); 字符串 x = EntityUtils.toString(responseEntity); catch(异常 e) // TODO: 处理异常 responseJSONObject = g.fromJson(reader, JSONResponseObject.class); Log.d(Constants.DEBUG_TAG_MAPS_console, responseJSONObject.toString()); reader.close(); System.gc(); 捕捉(异常 e) e.printStackTrace(); /代码>上线:
InputStream 是 = responseEntity.getContent();
应用程序崩溃...响应代码为 200 ... 我查看了我的 tomcat 日志,一切正常。 JSONResponseObject 填充了值并发送。
可能是什么问题?如何获取到 logcat 的堆栈跟踪?
一个可能相关的问题: 我很清楚logcat中的“无法连接工厂客户端” 任何可能导致该问题的事情都不是我的情况
-
api 密钥正确,debug.keystore 路径更正
清单中的所有权限
uses-library android:name="com.google.android.maps 也在清单中
地图显示正确,缩放/移动时刷新。
【问题讨论】:
stacktrace 应该在 logcat 中。可能是“System.err”作为日志标签。 +entity != null
应该检查 responseEntity
它是如何崩溃的? Logcat 中必须有一些异常堆栈跟踪。请发布异常堆栈跟踪。
【参考方案1】:
使用 google.gson.annotations 对 json 对象进行注释而不是仅实现可序列化后问题解决。
【讨论】:
以上是关于Android httpclient 请求和实体处理的主要内容,如果未能解决你的问题,请参考以下文章
Android--httpclient模拟post请求和get请求
httpclient获取响应实体和信息的封装方法(解耦更新)
使用 Wifi 的 Android 上的 HttpClient 会导致延迟(在初始请求时)
Angular httpClient 将响应映射到具有行为的实体