在最近的項目中有個需求是這樣的:
入參封裝成JSON,EXAMPLE:
{ "uuid": "iamauuid", "clientType": "AND", "content": "{/"gender/":/"F/",/"name/":/"TTT/"}"}其中content中是json的object,且要求把content中特殊的字符進行轉義。
主要代碼如下:
/** * post請求用json的格式傳遞數據給服務器 * * @param callback */public static <T> void postShareContent(Context context, T saveObject, final ShareSaveDataCallback callback) { final String uuid = StringUtils.generateUUID().replaceAll("-", ""); //利用Gson來處json數據和類模型之間的轉化 Gson gson = new Gson(); //把類模型對象轉化成json的數據模式 String contentJson = gson.toJson(saveObject); //用ShareEntity把內容給封裝起來,再處理成json的格式 ShareEntity shareEntity = new ShareEntity(); //uuid本地端生成,有特殊的方法,下面會注解 shareEntity.uuid = uuid; shareEntity.clientType = "AND"; shareEntity.content = contentJson; //再用gson.toJson()處理會自動把第二層的object對象的特殊字符轉義掉 String shareJson = gson.toJson(shareEntity); StringEntity entity = null; try { //把要傳給后端的json數據,用StringEntity給封裝起來 entity = new StringEntity(shareJson,"UTF-8"); //注明:UTF-8是防止傳給后端時中文出現亂碼 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } HttpApiClient.postJsonByAccessToken(context, ApiBaseUrl.getShareUrl(), entity, true, new ApiResponseHandler() { @Override public void onResponse(boolean success, JsonObject jsonObject, ErrorCode errCode) { super.onResponse(success, jsonObject, errCode); callback.onSaveResult(success, uuid, errCode); } });}postJsonByAccessToken的方法:
private static AsyncHttpClient mHttpClient = new AsyncHttpClient();public static void postJsonByAccessToken(Context context, String url, StringEntity entity, boolean isCompleterUrl, AsyncHttpResponseHandler handler) { synchronized (mHttpClient) { addHeader(HEADER_TOKEN, token); if (!isCompleterUrl) { url = getCompleteUrl(url); } mHttpClient.post(context, url, entity, ApiParam.CONTENT_TYPE_JSON, handler); }}contentType的類型為:application/json/**public interface ApiParam { /** * json格式 */ String CONTENT_TYPE_JSON = "application/json";}其中生產本地的uuid方法如下:相當于會自動生產一組隨機數
public static String generateUUID() { return UUID.randomUUID().toString();}數據代碼的一部分:
{"clientType":"AND", "uuid":"e3ab0260286d442da86da7fac21e1cc7" "content":"{/"matchEventStats/":{/"extraTime/":0,/"timeLineModels/":[{/"downPlayerId/":0,/"id/":2188,/"playerHeadUrl/":/"http://7xj3pr.com1.z0.glb.clouddn.com/registration/user/head/image/rdGsidKZHjPzun6TMrTDyMz7IngTONlQ/",/"playerId/":1147,/"playerName/":/"張宇斌/",/"schoolId/":6,/"timeLineEventType/":/"GOAL/",/"timeMin/":0,/"timeSec/":0,/"upPlayerId/":0},{/"downPlayerHeadUrl/":/"http://7xj3pr.com1.z0.glb.clouddn.com/default/head/useravatar.png/",/"downPlayerId/":1682,/"downPlayerName/":/"林修乾/",/"id/":1209,/"playerId/":0,/"schoolId/":116,/"timeLineEventType/":/"SU/",/"timeMin/":4,/"timeSec/":3,/"upPlayerHeadUrl/":......}由于數據量比較大,固就顯示一部分的數據來說明問題。
基本就是這樣,快去解決你們的問題吧!
以上這篇Android中post請求傳遞json數據給服務端的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答