向网站发送参数读取结果的小程序的时候遇到了问题,网站是用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中文网其他相关文章!