TIdHTTP get参数带中文解决方法--请求报文

Post 看起来稍微复杂先,暂不讨论。post 目前按照一般方法有中文名也可以。

拼接时:pointname=九记餐厅&begintime=2017-03-01 00:00:00& 有中文和时间有空格,也许会被服务端解析不出来。
&pointname=%E4%B9%9D%E8%AE%B0%E9%A4%90%E5%8E%85&begintime=2017-03-01%2000:00:00&这样的格式才可以。
通过 idhtp1.URL.URLEncode()可以解决

//  idhtp1.Request.ContentEncoding :='utf-8';
//  idhtp1.Request.CharSet :='utf-8';
    idhtp1.Request.ContentType := 'application/x-www-form-urlencoded';
    idhtp1.Request.AcceptLanguage := 'zh-CN,zh;q=0.8';
    idhtp1.Request.CacheControl   := 'no-cache';
    idhtp1.Request.Connection     := 'keep-alive';
    idhtp1.Request.Pragma         := 'no-cache';
    
    url:=  idhtp1.URL.URLEncode(Edit1.Text);
    GetText:= idhtp1.Get(url);
    mmo1.Text:=GetText;
    
//方法1
user  Httpapp; 
HttpEncode(AnsiToUtf8('中文'));
//方法2
  S := TIdURI.URLEncode(str);

 ==报文

HTTP协议-请求报文

用httpwatch查看访问一个网站的响应情况。敲入一个网址后,浏览器向服务器发出请求。
    页面中的图片、js、css在单独的请求中。
GET /index.html HTTP/1.1表示向服务器用GET方式请求首页,使用HTTP/1.1协议
Accept-Encoding gzip, deflate表示浏览器支持gzip、deflate两种压缩算法
Accept-Language zh-cn 表示浏览器支持的语言,很多进入后自动就是中文界面的国际网站就是通过读取这个头的值实现的。
Connection Keep-Alive。一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,
  然后如果浏览器或者服务器在其头信息加入了Connection:keep-alive,则TCP连接在发送后将仍然保持打开状态,
  于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
Cookie是浏览器向服务器发送和当前网站关联的Cookie,这样在服务器端也能读取浏览器端的Cookie了。
User-Agent为浏览器的版本信息。通过这个信息可以读取浏览器是IE还是FireFox、支持的插件、.Net版本等。

原文地址:https://www.cnblogs.com/rogge7/p/6531980.html