我的使用情形是透過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/
文章標籤
全站熱搜
留言列表