WebRequest调用数据和解决繁体网站数据的乱码问题

4 篇文章 0 订阅

 最经接触了一个项目,要用C#来做,但是他原有的网站是PHP做的,数据库使用的是MySql,也不能让我们直接去操作他们的数据库,就这样,提供了一套PHP API给我们,以前到是没有接触过,网上查了很多资料,才慢慢稍微有点弄懂了,但是还不是那么的清晰。

他们的PHP API其实就是一些url地址和一些参数,使用那些,会返回一些字符串。网上查资料,知道了会使用到XMLHTTP这种方式来使用,但是很多也是使用js来调用,虽然不难,但是比起在在CS中写C#代码来的话,就没那么方便(个人的想法)。最后找到了在代码中调用com组建,直接在CS文件中编写,确实也实现了,但是产生了乱码,网上有说原因,具体原理还太明白,只知道是编码格式的问题,可是怎么也弄,也不能正确显示,倒是有有方法能实现,但是用VBScrpt写的一个函数。

 

最后方法了原来.NET中有WebRequest这个类,功能是一样的,且用起来很方便,实验了下,还是乱码,最后把编码格式改成了Big5,正确了,呵呵。最后把代码贴在下面。

  1. #region 封裝調用API的函數
  2.         /// <summary>
  3.         /// 根據php api返回返回的字符串
  4.         /// </summary>
  5.         /// <param name="url">調用的api url</param>
  6.         /// <returns>返回需要的數據字符串</returns>
  7.         public static string GetDataWithUrl(string url)
  8.         {
  9.             string respstr;
  10.             WebRequest myWebRequest = WebRequest.Create(url);
  11.             WebResponse myWebResponse = myWebRequest.GetResponse();
  12.             Stream stream = myWebResponse.GetResponseStream();
  13.             Encoding encoder = Encoding.GetEncoding(ConfigurationManager.AppSettings["FontEncoding"]);//讀配置文件,編寫編碼格式
  14.             StreamReader sr = new StreamReader(stream, encoder);
  15.             //以字符串形式读取数据流
  16.             respstr = sr.ReadToEnd();
  17.             sr.Close();
  18.             return respstr;
  19.         }
  20.         #endregion

调用的编码格式那里,我使用了配置文件,其实就是"Big5",红色部分就是转换编码格式,需要使用到StreamReader其中一个带编码格式的重载,如果数据是其他格式,做相应的修改就可以了。

 

就这么几句简单的代码,搞定,比起用MSXML2这种方式好用多了,也不用去操作js,乱码问题也得以简单的解决,研究这个乱码花了我2个下午的时间,当然这里只是用于Get方法,POST的方法略有不同,还有,这方便会具体在研究一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值