使用Struts2寫的介面實現接收json格式的資料
先說下需求:寫一個介面,接收資料格式是json。
如果使用springMVC實現,非常簡單,方法中使用@RequestBody接收引數 即可,如下:
@ResponseBody
@RequestMapping(value = "/create" , method = RequestMethod.POST)
public XXX xxx(@RequestBody String json) {
xxxxxx
}
如果對springMVC實現比較感興趣,自己去百度,網上一堆資料。
下面我介紹下使用struts2實現,這方面我找了很多資料,網上資料很雜,自己總結後並且實現了功能。
其實一開始自己的沒弄明白原理,找的資料都是如何從頁面傳遞json到後臺,這並不是我想要的。
我們開發介面是供別人呼叫的,別人在他們專案中直接訪問你的介面url並通過post請求傳遞json資料。我們介面中是要接收json資料並進行解析,可是json是一個整體,如何接收,沒有key..使用谷歌的模擬post請求工具外掛Advanced RestClient除錯後發現,json資料其實是在post請求體中,類似於form表單,只不過json的httppost.setHeader("Content-Type","application/json"),而form表單為httppost.setHeader("Content-Type","application/x-www-form-urlencoded");所以可以獲取post請求體中的內容再進行解析。程式碼如下:
//獲取請求體中的資料 public String getStrResponse(){ ActionContext ctx = ActionContext.getContext(); HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST); InputStream inputStream; String strResponse = ""; try { inputStream = request.getInputStream(); String strMessage = ""; BufferedReader reader; reader = new BufferedReader(new InputStreamReader(inputStream,"utf-8")); while ((strMessage = reader.readLine()) != null) { strResponse += strMessage; } reader.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } return strResponse; }
/*XXXX任務介面*/
public String XXXTask(){
//獲取請求體中內容,轉換為json
JSONObject jsonRequest = JSONObject.fromObject(this.getStrResponse());
//獲取json中引數
String accountId1=jsonRequest.getString("account_id");
Long accountId=Long.parseLong(accountId1);
String verifyContent=jsonRequest.getString("verify_content");
String verifyType=jsonRequest.getString("verify_type");
log.info("獲得請求引數[account_id:"+accountId+",verify_content:"+verifyContent+",verify_type:"+verifyType+"]");
if("N".equalsIgnoreCase(verifyType)){
verifyType = "1";
}else if("A".equalsIgnoreCase(verifyType)){
verifyType = "2";
}else if("P".equalsIgnoreCase(verifyType)){
verifyType = "3";
}
//下面為具體業務處理
xxxxxxxxx
try {
xxxxxxxxxxxx
resMap.put(Fields.ERROR_NO_KEY, 0);
resMap.put(Fields.ERROR_INFO_KEY, "提交xxxx稽核成功");
log.info("提交xxxx稽核成功");
} catch (Exception e) {
e.printStackTrace();
resMap.put(Fields.ERROR_NO_KEY, -1);
resMap.put(Fields.ERROR_INFO_KEY, "提交xxxx稽核失敗");
log.error("提交xxxx稽核失敗");
}
return SUCCESS;
}
測試 傳送引數如下:
{
"account_id": "6",
"verify_content": "資料修改6",
"verify_type": "N"
}
成功接收引數。此時介面完成。
相關推薦
使用Struts2寫的介面實現接收json格式的資料
先說下需求:寫一個介面,接收資料格式是json。 如果使用springMVC實現,非常簡單,方法中使用@RequestBody接收引數 即可,如下: @ResponseBody @RequestMapping(value = "/create" , method = R
springmvc接收json格式資料
controller程式碼如下:@RequestMapping(value="/userInfo",method=RequestMethod.POST)@ResponseBodypublic String getUser(@RequestBody User user){
【php】jquery中$.get實現解析json格式資料及jsonp跨域
一直以來都是寫ajax都是使用$.getjson這個方法,主要圖的就是跨域方便,當然跨域有時候也會帶來不安全的隱患,現在專案中是$get,例子中基本上返回的是string格式,自己寫getjson寫習慣,想返回json格式的。下面就介紹三種實現json格式返回的方法。
Struts2返回json格式資料踩坑記錄
事件起因 昨天提測修改凍結/解凍銀行卡樣式的功能,微姐測試過程中發現呼叫ajax請求耗時過長,今天來排查,發現瀏覽器請求/finance/ajax/freeze/ajaxGetShopLists時,對應的後端方法getShopList()莫名其妙地執行了兩遍,並且返回給瀏覽器的Json字串如下:
與其他系統介面對接(java),json格式資料傳遞···OkHttpClient方式
上一種方式HttpURLConnection方式出現了點問題,就是在idea中啟動服務一切正常。當時用tomcat部署專案時候,對方介面接收引數出現中文亂碼問題。用了很多方式都沒有解決,不知有沒有大佬可以解決 引入依賴 <dependency>
與其他系統介面對接(java),json格式資料傳遞···HttpURLConnection方式
這個操作是與****系統進行資料介面的對接,本系統向****系統傳遞幾個引數,****系統接收並返回值。 目錄 post請求方式 @Service層 工具類ResultUtil pom需要新增的依賴 get請求方式 另一種 OkHttpClient 方式 post
laravel5.7如何實現呼叫json格式介面
介面呼叫,簡單實用,時間有限,附上程式碼與介面文件一段! 一、介面調取整個資料表資料 1、傳輸型別:‘get’; 2、Url:/new/read; 3、傳入引數 <?php public function show(){ $data=DB::table('cours
實現xml和json格式資料——單例模式的Db類(第二篇)
上一篇只是實現了xml和json格式資料的類的封裝,不過它是沒有資料的來源的;因此,本篇文章是封裝一個呼叫資料庫資料的方法,視訊裡面用的是mysql_connect()等函式,不過現在用這些函式會出現notice,因為這些函式已經過時了,將來可能不會再用到;其實
自定義HTTPMessageConverter接收JSON格式的資料
jsp頁面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); S
從頁面接收json格式的資料,在java類裡面進行解析
String jsonStr = {"name":"zfj" ,"dd":[{"ddr":"1","encrypt":"2","ff":"1
JSP頁面呼叫介面傳送JSON格式資料
問題描述: 1. 想在JSP頁面測試呼叫後臺介面,這個介面呼叫後需要進行頁面跳轉,所有無法使用Postman等工具 2. 介面接收的是JSON資料格式 在摸索了一番後,直接上可用程式碼片段: <html> <head> <titl
json格式資料,將資料庫中查詢的結果轉換為json, 然後呼叫介面的方式返回json(方式一)
呼叫介面,無非也就是開啟連結 讀取流 將結果以流的形式輸出 將查詢結果以json返回,無非就是將查詢到的結果轉換成jsonObject ============================================================= /*** * 將從資料中取到的結果以jso
ajax傳送json格式資料,呼叫restful介面
ajax傳送json格式資料,關鍵是指定contentType,data要是json格式 如果是restful介面,把type改成對應的post(增)、delete(刪)、put(改)、get(查)即
Python爬取Json格式資料並讀寫(改中文編碼)
Python Json檔案讀寫 經過測試發現,req.json()返回的型別是dict(字典型別) 如果有興趣的話,可以再加一個正則表示式來篩選出url的關鍵名字,用關鍵名來做檔名。
python中json格式資料輸出實現方式(無unicode編碼輸出形式)
在 http://blog.csdn.net/5iasp/article/details/23338039 的基礎上改進了下 不多說了,直接貼程式碼: # _*_coding:utf-8 _*_ import sys reload(sys) sys.setdefaulten
Asp.net C# 使用Newtonsoft.Json 實現DataTable轉Json格式資料
轉自:http://dongguojun.iteye.com/blog/737890 1.這裡下載:http://www.newtonsoft.com/products/json/ 安裝: 1.解壓下載檔案,得到Newtonsoft.Json.dll 2.在
Robotframework實現Dictionary資料和Json格式資料自由轉換
在Robotframework中進行介面協議測試時,需要實現Dictionary資料和Json格式資料自由轉換,便於資料構造方便快捷。本文章主要講解如何實現兩者之前的自由轉換。 一、首先Dictionary資料和Json格式資料自由轉換需要依賴python裡面的demjso
framework7實現跨域取得json格式資料
最近做搞一個webapp專案,採用的是framework7的框架,在跨域獲取json資料的時候,老是獲取不到資料,採用jquery的jsonp的話,服務端需要對資料進行處理,後來發現framework7本身有jsonp選項,能直接獲取json資料,非常方便。 重點是,在伺
SpringMVC的介面,接收json資料返回json資料並且解析為List物件集合
請求引數實體類 package com.lifuyi.entity; /** * 請求引數**重點內容** */ public class RequestPram { //訂單號 private String orderNum;
HttpServletRequest接收的是Json格式資料的解決辦法
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { i