c#访问http接口的"编码"问题

  记一次访问http数据接口的爬坑经历,一般访问一个http接口。

无非就是这么几行代码:

  

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");
                     HttpWebResponse response = (HttpWebResponse)request.GetResponse();

  
            System.IO.StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));//设置响应编码,乱码的话
            Console.Write(sr.ReadToEnd());
            sr.Close();
            response.Close();

可是这次,死话乱码。PostMan下正常的。。在浏览器中直接访问,设置编码为utf-8b也是可以正常显示的。。用c#后台代码测试了各种编码都以无效,告终。。

查看响应头:

Content-Encoding gzip。。。。刚开始被我略过了。。后来搜乱码google到了博客园的博问。

更新代码如下:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

           //先把响应流以gzip形式解码,然后再读取。结果success.......
            Stream stm = new GZipStream(response.GetResponseStream(),CompressionMode.Decompress);

      
            System.IO.StreamReader sr = new StreamReader(stm, System.Text.Encoding.GetEncoding("utf-8"));
            Console.Write(sr.ReadToEnd());
            sr.Close();
            response.Close();
时间: 2024-08-07 00:04:19

c#访问http接口的"编码"问题的相关文章

mysql的安装、C++访问mysql数据库、编码设置问题

一.mysql的安装,这个相对简单,直接去官网下载mysql安装程序,就可以完成安装过程,网上有很多安装教程,这个没什么注意事项. 二.C++访问mysql,主要是用到mysql定义的头文件,内部定义了各种数据结构和函数,比如MYSQL,MYSQL_RES,MYSQL_ROW,mysql_real_connect等等一系列的结构和函数.这里要注意的就是将头文件及lib文件以及dll文件配置到当前开发环境来进行访问mysql数据库. 以最新的vs2013作为示例说一下配置过程.为了写的清晰点,在网

数据访问层接口

IDBObject(数据访问层接口) Contents IDBObject ExecuteProcedure(string storedProcName, IDataParameter[] parameters) RunProcedure RunProcedure(string storedprocName, IDataParameter[] parameters, OperateReader OReader) RunProcedure(string storedprocName, IDataP

Java访问https接口实现

用两种方式分别实现了,第一种是jdk原生的,代码稍微多点,第二种是基于httpclient4版本的.在我的机器上,访问同一个接口原生的性能要好很多(前者900ms,后者5.7s左右),httpclient主要性能消耗在"HttpResponse res = client.execute(post);",大约占总执行时间的90%. Java代码   private static final String METHOD_POST = "POST"; private st

跨域访问http接口的使用

最近在弄一个sip网页集成版软电话,为了功能的完善,呼叫中心的工作人员为我们提供了一个http接口,我先在网页中直接打开分析了一下他的返回值,然后又放到js中去访问,结果一放到js中一访问就发现浏览器会提示: 刚开始我百思不得其解,查询过表头中未找到源http://localhost:8080,原本我还以为是在发送的时候我的表头有问题,但是用html5设置表头尝试了几次,发现还是提示一样的问题,于是我又在网上查询了一下0x80070005这个错误代码,网上提示说是属于跨域了,于是我又跟着网上的方

ssh通用数据访问层接口及实现

package org.dao; import java.io.Serializable;import java.util.LinkedHashMap;import java.util.List;import java.util.Map; /** * 通用数据访问层 */ public interface BaseDao<T> { /** * 保存单个实体 * @param entity */ public void save(T entity); /** * 级联保存单个实体对象 * @pa

HDFS简介及用C语言访问HDFS接口操作实践

一.概述 近年来,大数据技术如火如荼,如何存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有非常广泛的应用. Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.HDFS是Hadoop项目的核心子项目,是一种具有高容错性.高可靠性.高可扩展性.高吞吐量等特征的分

使用HttpURLConnection+AsyncTask访问webservice接口(返回json字符串)

现在很多APP程序网络通信都是基于http的,数据格式我访问常常使用如下配置,代码如下: 1.CstorAsyncTask.java[异步操作] public class CstorAsyncTask extends AsyncTask<Object, Integer, String> { /** * 回调接口 */ private RequestCallBack callback; public CstorAsyncTask(RequestCallBack cb) { this.callba

随机获得MySQL数据库中100条数据方法 驾照题库项目 MVC架构 biz业务层的实现类 根据考试类型rand或order通过dao数据访问层接口得到数据库中100或全部数据

package com.swift.jztk.biz; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Random; import com.google.gson.Gson; import com.swift.jztk.bean.Result

解决访问swaggerUI接口文档显示basic-error-controler问题

问题描述 使用swagger生成接口文档后,访问http://localhost:8888/swagger-ui.html#/,显示如下: 有些强迫症的我,感觉看起来很不舒服,结果百度了好久,找到解决方案,刚接触spring boot对于很多api还不是很熟悉,先mark再说 代码如下: package com.course.config; import com.google.common.base.Predicates; import org.springframework.context.a