我的使用情形是透過JAVA,需要以POST方式傳送一組參數到IIS Server的API,並根據所傳送的資料返回不同的結果來決定行動.

而這組參數又有包含一些特殊符號,比如 / + 等等.

而在URI傳送時這些特殊符號會造成錯誤,所以必須先使用 URLEncoder.encode( )將原來的queryStr轉換為urlParameters,像下面這樣

String urlParameters = URLEncoder.encode(queryStr,"UTF-8");

但這麼做產了一個問題,encode前IIS API還收得到參數值,而encode後居然就收不到了,所以參數值是NULL.

這是因為 URLEncoder.encode( )會一起把POST裡的= &轉換為%3D %26,而IIS卻又無法解讀.

所以最後我使用了變通的方法,方法如下

String urlParameters = URLEncoder.encode(queryStr,"UTF-8");
urlParameters = urlParameters.replace("%3D", "=");
urlParameters = urlParameters.replace("%26", "&");

把 = & 還原回去再傳送,這樣就能成功傳送並接收回傳值了.

這邊有篇文章有說到這個情形,有興趣的人可以參考 http://www.onjava.com/excerpt/jvntwkprg_3e/

arrow
arrow

    痞客興 發表在 痞客邦 留言(0) 人氣()