2

我正在尝试使用以下代码通过本地网络中的计算机上的 android ion 库发布 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 I/email: f@f.com 09-27 12:19:43.302 3309-3309/com.bewizme.bewizmeloginsample I/Password: f 09- 27 12:19:43.362 3309-3309/com.bewizme.bewizmeloginsample I/connected﹕已连接真实 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/json envoyé: {"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-339 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:使用加载器:com.koushikdutta.ion.loader.HttpLoader@b20a3808 09-27 12:19:43.652 3309-3331/com.bewizme.bewizmeloginsample D/ion-geny:(0毫秒) 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

我怀疑解析错误是由于没有返回任何内容。

此外,在我的服务器上,我编写了一段代码来检查传入的内容,并且我在服务器上没有从我的示例中收到任何内容,但是当尝试使用 RESTEASY 和 firefox 发送相同内容时,帖子正确发送,我的服务器收到了帖子并且一个响应被发回。

任何想法 ?我不知道出了什么问题...

4

1 回答 1

0

如果您因 json 解析错误而陷入困境,因为当您将结果输入 JsonObject 格式并尝试获取字符串时,通常人们会编写错误的解析,所以我现在用 String 格式编写它,您无需解析它,您可以在 String 中获得响应,所以您可以使用 .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());
于 2017-03-14T17:07:17.383 回答