向網站發送參數讀取結果的小程式的時候遇到了問題,網站是用get方式傳送查詢參數的,但是我按照網站的格式發送參數查詢的結果一直是空的,用fiddle抓包發現網站發送的參數不是UTF-8編碼的URLENCODE,而是直接把GBK編碼的字元傳送到了伺服器。找了好久沒找到解決辦法,找到了參考的一個很有用的文章點擊打開鏈接,稍微改動一下發送請求的方式解決了,自己記錄一下。
http的請求本質上也是發送位元組流,所以可以用socket取代c#中的httpwebrequest\response來實作:
發送請求:
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秒确保数据发送完成,我的请求比较简单,复杂的也可以判断数据发送完成再处理。。。
處理接收的部分可以參考上面說的文章,主要是chunked資料的接收處理需要特別處理。
相關推薦:
以上是使用其他編碼參數的get請求方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!