2017-03-10 12 views
0

私はプロキシを作成しようとしていますが、テキストベースのリクエストは正しく処理されます(js、css、html)。しかし、私が画像にロードしようとすると、画像にエラーが含まれているというメッセージが表示されます。httpで画像を転送する方法

私はこれをhttpで送信するために複数の方法を試しましたが、どれもまだ動作していません。関連するコードは次のとおりです

try 
     { 
      StringBuilder responseString = new StringBuilder(); 
      HttpWebRequest clientRequest = (HttpWebRequest)WebRequest.Create(url); 
      HttpWebResponse response = (HttpWebResponse)clientRequest.GetResponse(); 
      string headers = response.Headers.ToString(); 
      string contentType = response.Headers.Get("content-type"); 
      var encoding = ASCIIEncoding.ASCII; 
      if (contentType.IndexOf("image") > -1) 
      { 
       using (BinaryReader stream = new BinaryReader(response.GetResponseStream())) 
       { 
        var bytes = new byte[1024]; 
        while (true) 
        { 
         var n = stream.Read(bytes, 0, bytes.Length); 
         if (n == 0) 
         { 
          break; 
         } 
         responseString.Append(bytes); 
        } 
        return "HTTP/1.1 200 \n" + headers + responseString.ToString(); 
       } 
      } 
      else 
      { 
       using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding)) 
       { 

        return "HTTP/1.1 200 \n" + headers + reader.ReadToEnd(); 
       } 
      } 
     catch 
     { 
      addToList("Request failed"); 
      return "Request failed"; 
     } 
    } 

可能であれば、私はすでに存在するNetworkStreamを介して送信するようにhttp応答文字列を保持することをお勧めします。

+0

あなたのコードとドキュメントを見るだけで、画像には通常のASCII文字セット以外の文字が含まれている可能性があるため、ASCIIは正しいエンコードではないことをお勧めします。参照してください:https://msdn.microsoft.com/en-us/library/ms404377(v=vs.110).aspx –

+0

ASCIIエンコーディングは、テキストベースの要求にのみ使用され、私は画像にnoneを使用しています。おそらくASCIIがデフォルトでない限り –

+0

Image.FromStream()を使用するのではなく、ストリームを読んでいる理由はありますか?あなたはあなたが得ているエラーを投稿できますか? –

答えて

0

解決策は、クライアントに直接応答をストリーミングし、最初に文字列に変換しないことでした。ヘッダーは前に文字列で送信されます。

関連する問題