向網(wǎng)站發(fā)送參數(shù)讀取結(jié)果的小程序的時(shí)候遇到了問(wèn)題,網(wǎng)站是用get方式傳送查詢參數(shù)的,但是我按照網(wǎng)站的格式發(fā)送參數(shù)查詢的結(jié)果一直是空的,用fiddle抓包發(fā)現(xiàn)網(wǎng)站發(fā)送的參數(shù)不是UTF-8編碼的URLENCODE,而是直接把GBK編碼的字符發(fā)送到了服務(wù)器。找了好久沒(méi)找到解決辦法,找到了參考的一個(gè)很有用的文章點(diǎn)擊打開(kāi)鏈接,稍微改動(dòng)一下發(fā)送請(qǐng)求的方式解決了,自己記錄一下。
http的請(qǐng)求本質(zhì)上也是發(fā)送字節(jié)流,所以可以用socket代替c#中的httpwebrequest\response來(lái)實(shí)現(xiàn):
發(fā)送請(qǐng)求:
public void SendRequest(string server,string requestString,Encoding e){ Uri u= new Uri(server); Socket s=new Socket(AddressFamily.InternetNetwork, SocketType.Stream, ProtocolType.Tcp); s.SendTimeout=3000; s.ReceiveTimeout=3000; s.Connect(u.Host,u.Port); if(s.Connected) { s.Send(e.GetBytes(s),SocketFlags.None); System.Threding.Thread.Sleep(1000);//等待1秒確保數(shù)據(jù)發(fā)送完成,我的請(qǐng)求比較簡(jiǎn)單,復(fù)雜的也可以判斷數(shù)據(jù)發(fā)送完成再處理。。。
處理接收的部分可以參考上面說(shuō)的那個(gè)文章,主要是chunked數(shù)據(jù)的接收處理需要特別處理。
相關(guān)推薦:
get請(qǐng)求傳特殊符號(hào)的問(wèn)題
有關(guān)get請(qǐng)求的實(shí)例教程
微信小程序網(wǎng)絡(luò)請(qǐng)求(GET請(qǐng)求)詳細(xì)說(shuō)明
以上就是使用其他編碼參數(shù)的get請(qǐng)求方法的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!