我试图通过以下代码在本地网络中的计算机上通过android离子库发布json对象:
String url = "http://192.168.1.23/ws/svn/branches/application/public/connectMobile";
try {
JsonObject json = new JsonObject();
json.addProperty("email", email.getText().toString());
json.addProperty("psw", password.getText().toString());
Log.i("json envoyé",json.toString());
Ion.with(context)
.load("POST",url)
.addHeader("Content-Type", "application/json")
.setLogging("ion-geny", Log.DEBUG)
.setJsonObjectBody(json)
.asJsonObject()
.setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
if (result != null)
{
Log.i("result",result.toString());
}
else
{
Log.i("result","null");
}
if (e != null)
{
Log.i("error",e.toString());
}
else
{
Log.i("error","null");
}
}
});
} catch (Exception ex) {
ex.printStackTrace();
Log.i("except", ex.toString());
}
调试给出了这个:
09-27 12:19:43.302 3309-3309 / com.bewizme.bewizmeloginsample 我/电子邮件:f@f.com 09-27 12:19:43.302 3309-3309 / com.bewizme.bewizmeloginsample I /密码:f 09-27 12:19:43.362 3309-3309 / com.bewizme.bewizmeloginsample I / connected:connected true 09-27 12:19:43.402 3309-3309 / com.bewizme.bewizmeloginsample D / dalvikvm:GC_FOR_ALLOC释放142K,7%免费2917K / 3116K,暂停15ms, 总共18ms 09-27 12:19:43.482 3309-3309 / com.bewizme.bewizmeloginsample I /jsonenvoyé:{“email”:“f@f.com”,“psw”:“f”} 09-27 12:19:43.602 3309-3309 / com.bewizme.bewizmeloginsample D / dalvikvm:GC_FOR_ALLOC释放154K,6%免费3275K / 3480K,暂停14ms, 总共15ms 09-27 12:19:43.622 3309-3309 / com.bewizme.bewizmeloginsample D / ion-geny:(0 ms) http://192.168.1.23/ws/svn/branches/application/public/connectMobile: 准备要求 09-27 12:19:43.632 3309-3309 / com.bewizme.bewizmeloginsample I / ion-geny:(0 ms) http://192.168.1.23/ws/svn/branches/application/public/connectMobile: 使用loader:com.koushikdutta.ion.loader.HttpLoader@b20a3808 09-27 12:19:43.652 3309-3331 / com.bewizme.bewizmeloginsample D / ion-geny:(0 ms) http://192.168.1.23/ws/svn/branches/application/public/connectMobile: 执行请求。 09-27 12:19:44.862 3309-3331 / com.bewizme.bewizmeloginsample D / ion-geny:(1212 ms) http://192.168.1.23/ws/svn/branches/application/public/connectMobile: 响应不可缓存 09-27 12:19:44.902 3309-3331 / com.bewizme.bewizmeloginsample D / ion-geny:(1249 ms) http://192.168.1.23/ws/svn/branches/application/public/connectMobile: 连接成功 09-27 12:19:45.002 3309-3331 / com.bewizme.bewizmeloginsample D / dalvikvm:GC_FOR_ALLOC释放263K,9%免费3462K / 3788K,暂停61ms, 总共61ms 09-27 12:19:45.052 3309-3309 / com.bewizme.bewizmeloginsample I / result:null 09-27 12:19:45.052 3309-3309 / com.bewizme.bewizmeloginsample I / error:com.google.gson.JsonParseException:无法解析json
我怀疑解析错误是由于没有返回任何内容。
此外,在我的服务器上,我写了一段代码来检查是什么进来的,我从我的样本中没有收到服务器上的任何内容但是当使用Firefox发送相同的RESTEASY时,帖子被正确发送我的服务器接收邮件和回复被发回。
有什么想法吗?我无法弄清楚出了什么问题......
答案 0 :(得分:0)
如果你因json解析错误而陷入困境,因为当你将结果输入到JsonObject格式中并尝试获取字符串时,通常会有人编写错误的解析,所以我用String formate编写它现在你不需要解析它就可以得到你的响应字符串所以你可以很容易地使用.toString来获取String,并且有很多机制可以解决这个问题,并且编写代码的方法很多但意义相同但有时你编写的代码相同而且含义相同但编译器无法翻译它。所以我们得到错误就是为什么我在这里写字符串现在你可以得到你的回复。
.addHeader("Content-Type", "application/json")
.setLogging("ion-geny", Log.DEBUG)
.setJsonObjectBody(jsobj.getAsJsonObject())
.asString()
.setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
if (result != null)
{
Log.i("result",result.toString());