VC++使用CSocket发送HTTP Request时需要注意发送数据的编码格式
2013-10-29 21:04
501 查看
VS2010以及更高版本中新建的MFC项目字符集默认是Unicode,CString创建的字符串默认是Unicode。
使用CSocket时,若以CString组织需要发送的HTTP Head时,那么服务器不会接受这种数据,会强制断开连接。
HTTP服务器的默认读取方式是基于char type的单字节字符串编码(ANSI-1Byte(8bit)/char(英文字符)),而Unicode是以2Byte(16bit)/char存储的,所以不能以unicode编码来构造HTTP Head.
解决方法有两种,第一种:
以CStringA class构造HTTP Head;
根据MSDN上的解释:“A CStringA object contains string data that is based on the char type, and supports single-byte and multibyte ( MBCS) strings. ”
所以直接用CStringA构造HTTP Head是可以的。
第二种:
利用WideCharToMultiByte function(http://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx)
先将Unicode编码的字符串转化成单字节的ASCII,再调用发送给服务器。
使用CSocket时,若以CString组织需要发送的HTTP Head时,那么服务器不会接受这种数据,会强制断开连接。
HTTP服务器的默认读取方式是基于char type的单字节字符串编码(ANSI-1Byte(8bit)/char(英文字符)),而Unicode是以2Byte(16bit)/char存储的,所以不能以unicode编码来构造HTTP Head.
解决方法有两种,第一种:
以CStringA class构造HTTP Head;
根据MSDN上的解释:“A CStringA object contains string data that is based on the char type, and supports single-byte and multibyte ( MBCS) strings. ”
所以直接用CStringA构造HTTP Head是可以的。
第二种:
利用WideCharToMultiByte function(http://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx)
先将Unicode编码的字符串转化成单字节的ASCII,再调用发送给服务器。
相关文章推荐
- 使用HttpWebRequest post数据时要注意UrlEncode
- 使用HttpSendRequest函数POST数据时应该注意的一点
- iOS开发asi使用(二)ASIHttpRequest发送数据
- 使用SQLite附加(ATTACH)数据库时,需要注意数据文件编码的问题
- Ajax 使用XMLHttpRequest对象发送数据和接收处理XML源代码
- wince 中使用HttpSendRequest函数POST数据时应该注意的一点
- 【转】Poco 1.4.2 HTTPClientSession/HTTPRequest 使用使用代理(proxy)需要注意的一点
- 使用HttpWebRequest post数据时要注意UrlEncode
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- wince 中使用HttpSendRequest函数POST数据时应该注意的一点
- Poco 1.4.2 HTTPClientSession/HTTPRequest 使用使用代理(proxy)需要注意的一点
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- [VC++] WinHttpSendRequest发送数据失败
- http协议之response案例三:【content-type】--服务器发送给浏览器的数据类型和数据编码格式
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- wince 中使用HttpSendRequest函数POST数据时应该注意的一点
- wince 中使用HttpSendRequest函数POST数据时应该注意的一点
- 使用HttpWebRequest post数据时要注意UrlEncode[http自动转义]
- Firefox3中使用XMLHttpRequest(Ajax)发送二进制POST数据的简易调试法
- 使用httpwebrequest发送数据到网站