我有这个代码,调用游戏 Guild Wars 2 的这个示例 API 调用
HttpWebRequest request = HttpWebRequest.Create("https://api.guildwars2.com/v1/events.json?world_id=1001") as HttpWebRequest;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
byte[] bytes = new byte[response.ContentLength];
Stream stream = response.GetResponseStream();
stream.Read(bytes, 0, bytes.Length);
string result = Encoding.Default.GetString(bytes);
这是对官方激战 2 API 的示例调用,应该以 JSON 格式返回事件列表及其状态。
如果您在浏览器中调用该地址并将数据粘贴到文本编辑器中,它会给出一个正确的 JSON 字符串,大小略大于 300 kb。
但是,当被此代码调用并查看生成的字节数组时,前 3800-3900 个字节被正确填充(数字因调用而异),但其余的全部为零。
response.ContentLength 指示流的正确长度,略大于 300k,使用 stream.ReadByte() 进行测试告诉我流确实提供了 300k,在 3850 字节标记之后只是零。
我的代码中是否有错误,或者什么可能导致此问题?我能否以另一种方式调用 API 以获得正确、完整的响应?