背景:
我发送的是encoding='utf-8'格式的xml字符串,但一开始我使用的是
encoding.unicode.getbytes(strpost)或者default、ascii均会提示错误。
修改字符编码格式后,成功!所以要根据发送的格式选取合适的方法。
注意:
该函数可以发送xml到用友那边,但返回信息中中文字符为乱码。
<a target="_blank" href="http://blog.163.com/pinbo_jiankun/blog/static/13354648820131141548433/">这个函数也可以实现同样的功能却避免了乱码问题</a>
详细过程及代码如下:
1、创建httpwebrequest对象,httpwebrequest不能直接通过new来创建,只能通过webrequest.create(url)的方式来获得。 webrequest是获得一些应用层协议对象的一个统一的入口(工厂模式),它根据参数的协议来确定最终创建的对象类型。
2、初始化httpwebrequest对象,这个过程提供一些http请求常用的标头属性:agentstring,contenttype等,其中agentstring比较有意思,它是用来识别你用的浏览器名字的,通过设置这个属性你可以欺骗服务器你是一个ie,firefox甚至是mac里面的safari。很多认真设计的网站都会根据这个值来返回对不同浏览器特别优化的代码。
3、附加要post给服务器的数据到httpwebrequest对象,附加post数据的过程比较特殊,它并没有提供一个属性给用户存取,需要写入httpwebrequest对象提供的一个stream里面。
4、读取服务器的返回信息,读取服务器返回的时候,要注意返回数据的encoding,如果我们提供的解码类型不对,会造成乱码,比较常见的是utf-8和gb2312。通常,网站会把它编码的方式放在http header里面,如果没有,我们只能通过对返回二进制值的统计方法来确定它的编码方式。