C# Visual Studio中出现错误:“0”;System.Net.Http.HttpRequestException“;
我想通过API读取魔兽世界军械库的数据信息 我有以下代码C# Visual Studio中出现错误:“0”;System.Net.Http.HttpRequestException“;,c#,visual-studio-2012,C#,Visual Studio 2012,我想通过API读取魔兽世界军械库的数据信息 我有以下代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Http; using System.Json; using System.Diagnostics; using System.IO; n
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
using System.Json;
using System.Diagnostics;
using System.IO;
namespace CacheBuilder
{
class WebResult
{ //Holds the status information, and Item info for each Request
public string Item = null;
public string Status = null;
public WebResult(string Status) { this.Status = Status; }
}
class Program
{
private const string ITEMS_FILE = @"Items.txt";
private const string STATUS_FILE = @"Status.txt";
private static async Task WriteTextAsync(string filePath, string text)
{ //Writes to our output files
using (TextWriter writer = File.CreateText(filePath))
{
await writer.WriteAsync(text);
}
}
private static HttpClient client = new HttpClient();
private static async Task<WebResult> AccessTheWebAsync(int ItemID)
{
HttpResponseMessage response = await client.GetAsync("http://us.battle.net/api/wow/item/" + ItemID).ConfigureAwait(false);
WebResult wr = new WebResult(String.Format("{0}\t{1}", ItemID, (int)response.StatusCode)); //Store Item ID and response code
if (response.StatusCode == HttpStatusCode.OK) //If Code was OK
{
var responseValue = await response.Content.ReadAsStringAsync();
var json = JsonValue.Parse(responseValue); //Parse Json with System.Json
wr.Item = String.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}",
(int)json["id"], (string)json["name"], (int)json["buyPrice"], (int)json["sellPrice"],
(int)json["itemLevel"], (int)json["itemClass"], (int)json["itemSubClass"],
json["isAuctionable"].ToString().Equals("true") ? 1 : 0);
}
return wr;
}
private static StringBuilder Items = new StringBuilder();
private static StringBuilder Status = new StringBuilder();
static void Main(string[] args)
{ //Entry Point
Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(ServicePointManager.DefaultConnectionLimit);
List<Task> tasks = new List<Task>();
for (int i = 1; i <= 100000; i++)
{ //For Item ID's 1 through 100000
tasks.Add(AccessTheWebAsync(i));
if (i % 1000 == 0) //Pause until the current batch of 1000 is done
Task.WaitAll(tasks.ToArray());
}
Task.WaitAll(tasks.ToArray());
foreach (Task<WebResult> t in tasks)
{
Status.Append(t.Result.Status).Append(Environment.NewLine);
if (t.Result.Item != null) Items.Append(t.Result.Item).Append(Environment.NewLine);
}
List<Task> fileWrites = new List<Task>() { //Output our Final Files
WriteTextAsync(ITEMS_FILE, Items.ToString()), //Log of all Items
WriteTextAsync(STATUS_FILE, Status.ToString()) //Log of all response codes
};
Task.WaitAll(fileWrites.ToArray());
sw.Stop();
Console.WriteLine("Run Completed, Time elapsed: {0}", sw.Elapsed);
Console.ReadLine();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
Net系统;
使用System.Net.Http;
使用System.Json;
使用系统诊断;
使用System.IO;
命名空间缓存生成器
{
类WebResult
{//保存每个请求的状态信息和项目信息
公共字符串项=null;
公共字符串状态=null;
公共WebResult(字符串状态){this.Status=Status;}
}
班级计划
{
private const string ITEMS_FILE=@“ITEMS.txt”;
private const string STATUS_FILE=@“STATUS.txt”;
专用静态异步任务WriteTextAsync(字符串文件路径,字符串文本)
{//写入我们的输出文件
使用(TextWriter=File.CreateText(filePath))
{
wait writer.WriteAsync(文本);
}
}
私有静态HttpClient=新HttpClient();
私有静态异步任务访问WebAsync(int-ItemID)
{
HttpResponseMessage response=await client.GetAsync(“http://us.battle.net/api/wow/item/“+ItemID).配置等待(false);
WebResult wr=newwebresult(String.Format({0}\t{1}),ItemID,(int)response.StatusCode));//存储项ID和响应代码
if(response.StatusCode==HttpStatusCode.OK)//如果代码正常
{
var responseValue=await response.Content.ReadAsStringAsync();
var json=JsonValue.Parse(responseValue);//使用System.json解析json
wr.Item=String.Format(“{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}”,
(int)json[“id”],(string)json[“name”],(int)json[“buyPrice”],(int)json[“sellPrice”],
(int)json[“itemLevel”],(int)json[“itemClass”],(int)json[“itemSubClass”],
json[“isAuctionable”].ToString().Equals(“true”)?1:0;
}
返回wr;
}
私有静态StringBuilder项=新StringBuilder();
私有静态StringBuilder状态=新建StringBuilder();
静态void Main(字符串[]参数)
{//入口点
秒表sw=新秒表();
sw.Start();
Console.WriteLine(ServicePointManager.DefaultConnectionLimit);
列表任务=新列表();
对于(inti=1;i)如果您查看异常的详细信息,它是否有InnerException?如果是,它是什么?InnerException{“Die Verbindung mit dem Remoteserver kann nicht hergestellt werden.”System.Exception{System.Net.WebException}这意味着“它无法与远程服务器建立连接”,这意味着“它无法与远程服务器建立连接”-Hertus 1分钟前编辑,错误消息非常清楚:它无法到达服务器。检查您的网络,检查服务器的地址等。是的,url工作正常,没有网络问题(我禁用了防火墙等)。还有其他可能性吗?