2015-12-02 2 views
0

Get был довольно прост, но, похоже, я склоняюсь вокруг POST. Мне нужна помощь в отправке изображения и значения int на сервер. это запрос, который я должен выполнить:Опубликовать на сервер с Android

http://example.com/webservice/?value=[{ 


"table": "images", 
    "operation": "insert", 
    "params": [ 
    { 
     "img_id": (int)   
     "img_path": (varchar) 
    } 
    ], 
    "transactionCompleted": true 
}] 

Как я могу отправить их в базу данных сервера? Любые указатели будут оценены.

ответ

2

Вы можете оставить объект JSON с OkHttp от площади и Gson от Goggle.

OkHttp

Gson

public static final MediaType MIME_JSON = MediaType.parse("application/json; charset=utf-8"); 

okHttpClient = new OkHttpClient(); 

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

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

JsonArray params = new JsonArray(); 
JsonObject paramItem = new JsonObject(); 
paramItem.addProperty("img_id", id); 
paramItem.addProperty("img_path", path); 
params.add(paramItem); 

item.add("params", params); 

form.add(item); 

RequestBody body = RequestBody.create(MIME_JSON, new Gson().toJson(form)); 
Request request = new Request.Builder() 
    .addHeader("Accept", "application/json") 
    .url("http://example.com/post") 
    .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

это должно быть внутри AsyncTask? – kinsell

+0

@kinsell No. Вам не нужно запускать его внутри AsyncTask. OkHttp обрабатывает его для вас. –

+0

JsonObject json = new JsonObject(); json.addProperty ("img_id", imageId); json.addProperty ("img_path", imagePath); JSONArray paramArr = новый JSONArray(); paramArr.put (json); JsonObject obj = new JsonObject(); obj.addProperty («таблица», «изображения»); obj.addProperty («операция», «вставка»); obj.addProperty ("params", paramArr.toString()); obj.addProperty ("transactionCompleted", true); – kinsell

0

Использование Ion от @koush.

POST:

JsonObject json = new JsonObject(); 
json.addProperty("foo", "bar"); 

Ion.with(context) 
.load("http://example.com/post") 
.setJsonObjectBody(json) 
.asJsonObject() 
.setCallback(new FutureCallback<JsonObject>() { 
    @Override 
    public void onCompleted(Exception e, JsonObject result) { 
     // do stuff with the result or error 
    } 
}); 
Смежные вопросы