ウェブページをダウンロードするプログラムを書いています。ほとんどの Web ページで正常に動作しますが、動作しないページがいくつか見つかりました。
これらのページには 0x00 文字が含まれています。
この文字まではページ コンテンツを読むことができますが、それ以降のコンテンツは読むことができません。
コードのこの部分を使用して、応答を読み取ります。
IAsyncResult ar = null;
HttpWebResponse resp = null;
Stream responseStream = null;
String content = null;
...
resp = (HttpWebResponse)req.EndGetResponse(ar);
responseStream = resp.GetResponseStream();
StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
content = sr.ReadToEnd();
この例では、非同期リクエストを使用していますが、同期リクエストを試してみると、同じ問題が発生します。
私も同じ結果でこれを試します:
HttpWebResponse resp = null;
Stream responseStream = null;
String content = new String();
...
responseStream = resp.GetResponseStream();
byte[] buffer = new byte[4096];
int bytesRead = 1;
while (bytesRead > 0)
{
bytesRead = responseStream.Read(buffer, 0, 4096);
content += Encoding.UTF8.GetString(buffer, 0, bytesRead);
}
たとえば、この URL http://www.daz3d.com/i/search/searchsub?sstring=ps_tx1662b&_m=dps_tx1662bで問題が発生します。
あなたの応答に感謝
ユイス