OkHttpClient Enumeration 的使用記錄

本文章記錄在工作開發中自己如何去調用別人的服務,使用 OKHttpClient
本文還用到了 @Component 註解

  1. @controller 控制器(注入服務)
  2. @service 服務(注入dao)
  3. @repository dao(實現dao訪問)
  4. @component (把普通pojo實例化到spring容器中,相當於配置文件中的<bean id="" class=""/>
@Component
public class HttpClientUtils {
	
//我也不清楚爲啥直接使用 
/*
  @Value("${address-path.address}")
  private String address;
*/
// 拿不到值,所以只好這樣進行注入(知道的大佬 指點一下)

private static String address;

    @Value("${address-path.address}")
    public void setAddress(String address) {
        this.address = address;
    }

public static Map<String, Object> GetPivture(String url) {
        //創建OkHttpClient對象
        OkHttpClient client = new OkHttpClient();
        //創建Request對象 請求接口將請求的參數添加到接口地址後面
        //address是請求地址 url 是後面的參數(命名不規範見諒)
        Request request = new Request.Builder().url(address + url).build();
        Response response = null;
        //得到Response對象
        try {
            response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                String result = response.body().string();
                if (!"".equals(result)) {
                //這個地方是解析請求返回的參數
                    Map<String, Object> map = (Map<String, Object>) JSON.parse(result);
                    Map<String, Object> datas = (Map<String, Object>) map.get("data");
                    return datas;
                } else {
                    return null;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
 }

由於公司不讓使用實體類,所以在 Controller層 在接收參數的時候,這樣寫:

	@ApiOperation("項目信息錄入")
    @PostMapping("/projectEntering")
    public CommonResult projectEntering(
            @ApiParam(name = "xmmc", value = "項目名稱") @RequestParam String xmmc,
            @ApiParam(name = "aa", value = "某某AA") @RequestParam String aa,
            @ApiParam(name = "bb", value = "某某BB") @RequestParam String bb,
            @ApiParam(name = "cc", value = "某某CC") @RequestParam String cc,
            @ApiParam(name = "dd", value = "某某DD") @RequestParam(required = false) String cc,
            HttpServletRequest request) {
            //調用getParametersMap(),將所有的參數,統計放到Map中
        Map<String, Object> parametersMap = BaseParamMapUtils.getParametersMap(request);
        ...寫邏輯...
        
        }

用到了 Enumeration
Enumeration接口 中定義了一些方法,通過這些方法可以枚舉(一次獲得一個)對象集合中的元素。

  • boolean hasMoreElements( )
    測試此枚舉是否包含更多的元素。

  • Object nextElement( )
    如果此枚舉對象至少還有一個可提供的元素,則返回此枚舉的下一個元素。

	/**
     * 獲取全部的參數(轉成Map)
     *
     * @param request
     * @return form/data request.getParameter(pName); application/json
     * inputStream
     */
    public static Map<String, Object> getParametersMap(HttpServletRequest request) {
        //Enumeration接口中定義了一些方法,通過這些方法可以枚舉(一次獲得一個)對象集合中的元素。
        Enumeration<?> pNames = request.getParameterNames();
        Map<String, Object> params = new HashMap<>();
        //測試此枚舉是否包含更多的元素 -> boolean
        while (pNames.hasMoreElements()) {
           // 如果此枚舉對象至少還有一個可提供的元素,則返回此枚舉的下一個元素 -> Object
            String pName = (String) pNames.nextElement();
            // 簽名不算
            if ("sign".equals(pName)) {
                continue;
            }
            Object pValue = request.getParameter(pName);
            params.put(pName, pValue);
        }
        return params;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章