2015-12-02 66 views
1

这是我必须执行查询:OkHttp与GSON(POST)问题

http://example.com/webservice/?value= 
    [{ 
     "table": "images", 
      "operation": "insert", 
      "params": [ 
      { 
       "color_id": 2 ,   
       "name": "yellow" 
      } 
      ], 
      "transactionCompleted": true 
     }] 

但我不能够做到这一点从Android应用程序。我正在使用OkHttpGson。看看下面的代码。当使用调试器时,我发现一切正常,但仍然没有插入值。任何帮助将不胜感激。

OkHttpClient okHttpClient = new OkHttpClient(); 

JsonArray form = new JsonArray(); 
JsonObject item = new JsonObject(); 

item.addProperty("table", "images"); 
item.addProperty("operation", "insert"); 

JsonArray params = new JsonArray(); 
JsonObject paramItem = new JsonObject(); 
paramItem.addProperty("color_id", colorId); 
paramItem.addProperty("name", name); 
params.add(paramItem); 
item.add("params", params); 
item.addProperty("transactionCompleted", true); 
form.add(item); 

RequestBody body = RequestBody.create(MIME_JSON, new Gson().toJson(form)); 
       Request request = new Request.Builder() 
         .addHeader("Accept", "application/json") 
         .url("http://www.example.com/webservice/?value=") 
         .post(body) 
         .build(); 

       okHttpClient.newCall(request).enqueue(new Callback() { 
        @Override 
        public void onFailure(Request request, IOException e) { 

        } 
        @Override 
        public void onResponse(Response response) throws IOException { 

        } 
       }); 
+0

你能否澄清一下'当我在浏览器中输入它实际上是插入值'?国际海事组织,在浏览器中,它的GET请求,而不是POST – BNK

+0

我的错误,我不知道 – kinsell

+0

我可以做GET插入?那是错的吗? – kinsell

回答

0

我通过在URL中添加JSON解决了这个问题。我知道这不是一个方便的方法。但它的工作。我希望有人会觉得这很有用。

public class example { 

     OkHttpClient client = new OkHttpClient(); 

     String run(String url) throws IOException { 
      Request request = new Request.Builder() 
        .url(url) 
        .build(); 

      Response response = client.newCall(request).execute(); 
      return response.body().string(); 
     } 
    } 
JsonArray form = new JsonArray(); 
JsonObject item = new JsonObject(); 

item.addProperty("table", "images"); 
item.addProperty("operation", "insert"); 

JsonArray params = new JsonArray(); 
JsonObject paramItem = new JsonObject(); 
paramItem.addProperty("color_id", colorId); 
paramItem.addProperty("name", name); 
params.add(paramItem); 
item.add("params", params); 
item.addProperty("transactionCompleted", true); 
form.add(item); 
response = example.run("http://www.example.com/webservice/?value=" + new Gson().toJson(form));