下面的項目用的是servlet3.0架構java
接口(doubbo消費者項目和服務者項目共享的jar項目中):spring
package serviceinvoke; import com.alibaba.dubbo.rpc.protocol.rest.support.ContentType; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("baService") public interface BaService { @POST @Path("addUser") @Consumes({MediaType.APPLICATION_JSON}) @Produces({ContentType.APPLICATION_JSON_UTF_8}) String addUser(String jsonString); }
服務層:json
package serviceinvoke; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.io.File; import javax.annotation.Resource; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; @Service public class BaServiceImpl implements BaService { private static final Logger logger = LoggerFactory.getLogger(BaServiceImpl.class); @SuppressWarnings("unchecked") @Override public String addUser(String jsonString) { //取請求的jsonString中的requestObject轉換爲map Map<String, Object> requestMap = getJsonRequestObject(jsonString); String username; String password; username = String.valueOf(requestMap.get("username")); password = String.valueOf(requestMap.get("password")); //各類業務邏輯 todo return "這是一個dubbo的遠程服務提供接口實現類"; } /** * * Description:獲取報文中的requestObject * @param stringJsonn * @return */ @SuppressWarnings({ "rawtypes" }) public static Map getJsonRequestObject(String stringJsonn) { JSONObject strJson = JSONObject.fromObject(stringJsonn); Map mapParam = strJson; Map ContractRootMap = (Map)mapParam.get("ContractRootMap"); Map SvcContMap = (Map)ContractRootMap.get("SvcCont"); Map requestObject = (Map)SvcContMap.get("requestObject"); return requestObject; } }
postman測試:架構
各個可選位置參數ide
位置1:選擇請求方式post
位置2:寫請求地址測試
除了 IP 地址,端口,項目名稱後,就是 service 接口上的 path註解中的內容:spa
位置3:由於咱們是post請求,並且請求參數是個複雜的json串,因此,這裏選 body,同理4的位置選擇rawrest
位置4:同位置3緣由code
位置5:由於要發送json格式的參數,因此這裏選 json,若是不選,send請求時會報415錯誤
位置6:請求參數