Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpHandler WebRequest内容类型与浏览器不一样_C#_Asp.net_.net_Httpwebrequest_Webrequest - Fatal编程技术网

C# HttpHandler WebRequest内容类型与浏览器不一样

C# HttpHandler WebRequest内容类型与浏览器不一样,c#,asp.net,.net,httpwebrequest,webrequest,C#,Asp.net,.net,Httpwebrequest,Webrequest,我创建了一个使用WebRequest的方法 url是:http://demo.boundlessgeo.com/geoserver/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=ne%3Ane&WIDTH=256&HEIGHT=256&CRS=EPSG%3A3857&STYLES=&BBOX=-80150033.37115698%2C0%2C-60112525.028

我创建了一个使用WebRequest的方法

url是:
http://demo.boundlessgeo.com/geoserver/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=ne%3Ane&WIDTH=256&HEIGHT=256&CRS=EPSG%3A3857&STYLES=&BBOX=-80150033.37115698%2C0%2C-60112525.02836773%2C20037508.342789244

此url返回png图像。当我在浏览器上访问时,它会出现

我正在使用c#WebClient对象发送该url请求并返回一个

HttpWebRequest webRequest;
webRequest = (HttpWebRequest)WebRequest.Create(requestUrl);
webRequest.Method = "GET";

HttpWebResponse response = (System.Net.HttpWebResponse)webRequest.GetResponse();

if (response.StatusCode.ToString().ToLower() == "ok")
{
    context.Response.ContentType = response.ContentType;
    StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());
    context.Response.Write(reader.ReadToEnd());
}
这将返回一个编码文本,如下所示:

�PNG    
IHDR\r�f��IDATx^�}�^IU盦�ǖ��VP�nő��%�\i��4N���yN۹N��N3s�V�{���d�\�x�6�H����B h�@�4   ��A9�����N=�T�]{?�I���Q��w��Z�j�U�V�����+���۱��-Vavvw2_T�/V�x�_�X1�}Պ�N+\�Gyv�����Z�����,�^�b���)���T~UkU�,�|��X�\�6�w��|��OoS�k����X�znm'��|��������X���y6�$]u���uQ]��̈�l�xEQ��

您认为有什么问题?

Response.BinaryWrite()
?也不要忘记处理您的请求/响应/readerI。我将使用此代码作为代理。太多的请求将到达这个代理。你觉得表演怎么样?我们在这里进行字节数组转换。我改变了我的解决方案,直接使用outputstream,不再需要ToArray调用。谢谢你的解决方案,为什么使用字节大小为4096?
        context.Response.ContentType = response.ContentType;

        using (WebResponse response = webRequest.GetResponse())
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                using (Stream outputStream = context.Response.OutputStream)
                {
                    int cnt = 0;
                    byte[] buffer = new byte[4096];
                    do
                    {
                        cnt = responseStream.Read(buffer, 0, buffer.Length);
                        outputStream.Write(buffer, 0, cnt);
                    } while(cnt != 0);
                }
            }
        }