java通過流的方式獲取引數亂碼及編碼問題
最近在寫一個電商平臺的專案,原本任務已經完成,但是淘寶做妖,限制資料輸出,只能通過奇門的方式獲取訂單資料,故又多了一個模組任務。
通過奇門推資料的時候,你要獲得推過來的資料,傳統的方式是通過引數名獲取其值,但是有個問題,這個時候你不知道奇門傳過來的引數名是什麼,而且資料是以xml的格式傳過來的,故傳統引數形式不行,想了很久,考慮用輸入流的方式來獲取資料;
主要思路:
1,獲取輸入流
2,將輸入流轉為字串
3,解碼
@RequestMapping(value = "/getTradeList", method = RequestMethod.POST ) @ResponseBody public String getTradeList(HttpServletRequest req ) throws IOException { req.setCharacterEncoding("UTF-8"); String tradeInfos = ""; try { BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(req.getInputStream(),"utf-8")); //讀取引數流 String nextLine = bufferedReader.readLine(); while( nextLine != null ) { System.out.println(req.getCharacterEncoding()); tradeInfos += nextLine; nextLine = bufferedReader.readLine(); } tradeInfos =URLDecoder.decode(tradeInfos, "UTF-8");//解碼 System.out.println(tradeInfos); //讓瀏覽器用utf8來解析返回的資料 response.setHeader("Content-type", "text/html;charset=UTF-8"); //告訴servlet用UTF-8轉碼,而不是用預設的ISO-8859-1 response.setCharacterEncoding("UTF-8"); String data = "中國"; PrintWriter pw = response.getWriter(); pw.write(data+tradeInfos); //這樣將資料返回到了前端,且不會亂碼 pw.close(); } catch (IOException e) { e.printStackTrace(); }
http中文亂碼問題: http://www.sojson.com/blog/227.html
servlet後臺返回及亂碼問題:http://blog.csdn.net/qq_36523667/article/details/78585229
相關推薦
java通過流的方式獲取引數亂碼及編碼問題
最近在寫一個電商平臺的專案,原本任務已經完成,但是淘寶做妖,限制資料輸出,只能通過奇門的方式獲取訂單資料,故又多了一個模組任務。 通過奇門推資料的時候,你要獲得推過來的資料,傳統的方式是通過引數名獲取其值,但是有個問題,這個時候你不知道奇門傳過來的引數名是什麼,而且資料是以
Spring boot 通過AOP獲取引數名稱及引數值並對引數進行校驗
/** * 定義切入點為 帶有 NotEnableEmpty 註解的 */ @Pointcut("@annotation(cn.acsm.paddy.manage.anotation.NotEnableEmpty)") public void params() { }
java 通過流讀取request請求引數
第一個是TestIOSServlet的內容,通過網路程式設計的方式 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti
Java MVC Controller 中通過不同方式獲取 @PathVariable 引數值
1 @RequestMapping(value = "/test/{a}") 2 public @ResponseBody Object test(@PathVariable String a) { 3 4 return a; 5 } 2.需要通用@PathVa
java通過http方式下載文件
輸入流 mozilla msi 網絡 per tco you rop ddk package com.qiyi; import java.io.BufferedReader; import java.io.IOException; import java.io
通過 http 方式獲取 RabbitMQ 隊列消息數量(python3)
python 在使用 pika 連接 RabbitMQ 的過程中,發現只能獲取 ready 狀態的消息數量,只要用 http 請求來實現目的。#encoding: utf-8 #author: walker #date: 2018-03-06 #summary: 獲取 RabbitMQ 中3種狀態消息的
IE瀏覽器通過ActiveX方式獲取客戶端IP地址
描述: 最近遇到一個需求,要進行日誌記錄,其中包含了IE瀏覽器客戶端IP地址的記錄。在嘗試了從request中獲取IP地址後,在沒有出現代理IP的情況下,可以正常獲取。即:區域網下,可以收集客戶端IP成功。但一旦出現代理IP的情況,就獲取不到我們正確的IP地址了。 分析: 方式一:從request中取I
內網中,JAVA通過代理方式,訪問URL
1)前言:企業實際開發中,會遇到這樣的情況,在瀏覽器中可以訪問域名地址(如:www.baidu.com),但是實際在命令列中,通過ping命令是ping不通的。 2)原因: 2.1)首先我們的電腦能連線到外網,在通過域名訪問地址時,正常的訪問流程是,先到最近的域名
java檔案流方式下載檔案
該方式Java中基本上都通用,主要4個步驟,下面的ServletContext物件可以不用,可以根據自己的方式來。 這裡我使用的是SpringMVC,不過它在這裡的唯一用途就是用來獲取ServletContext物件,這個物件的用途,下面例項中有說明 需
VC++6.0 通過HTTP方式獲取網頁 OpenURL
// 顯示圖片, lpstrImgUrl 為圖片URL地址,hWnd 為視窗控制代碼 HRESULT Utils::ShowPic(char*lpstrImgUrl,HWND hWnd) { HDC hDC_Temp=GetDC(hWnd); IPicture *pPi
java--通過DOM方式建立xml檔案
方法如下: //建立xml的方法public static void createxml() throws Exception{DocumentBuilderFactory dbf=Documen
postman請求引數亂碼及Tomcat伺服器設定UTF-8解決方案
使用postman模擬請求,服務端怎麼獲取中文都是亂碼,嘗試設定請求編碼和accept等都沒用。同事提醒下發現在伺服器server.xml對應埠Connector新增URIEncoding=”UTF-8”即可 > <Connect
java--通過JDOM方式生成xml檔案簡單例項
方法如下: public static void createRss() throws Exception{//第一步先建立一個跟節點Element rss=new Element("rss");
android和php之間通過post方式傳遞引數
上一篇博文講了android如何接收php傳送的資料,這一篇講一下php如何接收android通過post方式上傳的json引數首先是伺服器程式碼接下來就是android客戶端程式碼了最後吐槽一下,這博文編輯器太垃圾了。推薦一篇比較詳細的博文,我的伺服器端程式碼就是參考他的程
Java通過銀行卡號獲取卡屬銀行(含校驗)
注:百度所得,更新了資料 public class GetBank { /** * @param args * @throws SQLException */ private final static int[] bankBin = {
java通過身份證號碼獲取出生日期、性別、年齡
身份證號碼: 15位:6位地址碼+6位出生年月日(900101代表1990年1月1日出生)+3位順序碼 18位:6位地址碼+8位出生年月日(19900101代表1990年1月1日出生)+3位順序碼+1位校驗碼 地區碼: 1、 第一、二位表示省(自治區、直
java--通過sax方式解析xml檔案的簡單例項
1.重寫的繼承自DefaultHandler的方法,部分程式碼如下: @Override public void startElement(String uri, String localName, String qName, Attributes attribut
java通過反射呼叫不同引數的方法
import java.lang.reflect.Method; public class testReflect { /** * @param args */ public sta
關於JAVA IO流寫檔案數字亂碼的問題
在完成JavaWeb作業時遇到一題是需要持久化儲存登入人數的,題主當時就在Listener裡寫了輸入輸出兩個函式,但是檢查一看發現寫入的數字變成了亂碼(其實不能說是亂碼)。 當時很疑惑就改用瞭如下程式碼: 寫程式碼: File file = new File(PATH);
Java 通過反射來獲取物件的成員變數和其值的例子
/** * @author peter * 2018/9/4 19:04 */ public class Reflect { private String name; private int age; private String