Java 使用 Http
-
Java 使用 HttpURLConnection,HttpClient,RestTemplate,和 Feign 等,進行 http 通信;
-
URLEncoder和URLDecoder,用於字符串向 application/x-www-form-urlencoded 的 MIME 類型字符串的轉換;
String param_de = URLDecoder.decode("%E7%96%AF");
String param_en = URLEncoder.encode("瘋狂java講義");
get 請求,參數通過 url?key=URLEncoder.encode(value,"utf-8") 攜帶
post 請求,如果 content-type 是 application/x-www-form-urlencoded,請求體是
"key1=URLEncoder.encode(val1)&key2=URLEncoder.encode(val2)".getBytes("utf-8");
如果是 application/json,請求體是 JSONObject.toJSONString("http請求體數據").getBytes("utf-8");
如果是 multipart/form-data:...
如果是 text/plain,...
- 注意 request.setCharacterEncoding(“UTF-8”) 這個方法,只對 post 請求有用,因爲只會對請求體中的內容進行編碼;
RestFul 服務
-
面向資源的服務,通過 URL 定位資源,通過 HTTP 方法定義資源操作,如,GET 請求,讀取資源,POST 請求,創建資源,PUT/PATCH 請求,更新資源,DELETE 請求,刪除資源;
-
Spring 框架,對 RestFul 服務進行封裝,使用到 @ResponseBody,@RequestBody,@PathVariable 等註解,其中@ResponseBody 中的 produces 表示只處理指定的 Accept 的請求,@RequestBody 的 consumes表示只處理指定的 content-type 的請求;注意需要配置消息轉換器;
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="stringConverter" />
<ref bean="jacksonConverter" />
</list>
</property>
</bean>
<bean id="jacksonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=utf-8</value>
</list>
</property>
</bean>
<bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
-
springboot 中是通過自動配置類 … 來自動配置的;
-
異常處理,通過註解 @ExceptionHandler(MyExp.class),@ResponseStatus(HttpStatus.NOT_FOUND) 來完成;