最近因為要串接舊的簽核系統,因為是超久的系統,當初是用ASP,Big5開發的,所以交換資料需要經過轉碼。
最近因為要串接舊的簽核系統,因為是超久的系統,當初是用ASP、Big5開發的,所以交換資料需要經過轉碼。
丟資料:
POST資料比較簡單,直接把內容用Big5寫就可以了…Form的資料直接把參數和值用&接起來寫到內容去就可以了。
//因為post到asp系統,所以要換編碼到950
Encoding encoding = Encoding.GetEncoding(950);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Config.PostFlowUrl);
request.Method = "POST";
string param = String.Format("E={0}&S={1}&L={2}&N={3}", userID, subject, lid, nid);
byte[] bs = encoding.GetBytes(param);
request.ContentType = "application/x-www-form-urlencoded;charset=big5";
request.ContentLength = bs.Length;
using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse response = request.GetResponse())
{
StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
// Read the content.
string responseFromServer = reader.ReadToEnd();
}
接資料:
因為利用Request.QueryString直接取值會被以UTF-8解碼,所以要取得原始的內容來自己轉。
string query = HttpUtility.UrlDecode(Request.Url.Query, System.Text.Encoding.GetEncoding("big5"));
利用Request.Url.Query可以取得尚未解碼的原始字串,再利用RegularExpressions來解析即可。
想要取特定參數但是不會寫pattern的可以參考黑暗大的文章…CODE-剔除特定QueryString參數