我有一个简单的Web API,它获取一个URL并生成一个短网址作为返回。我创建了一个VS控制台应用程序,在其中通过
这是我用来调用Web API的代码。通过浏览器调用Web API可以正常工作。
HTTPClient
对象调用Web API。当我第一次运行代码时,它会抛出以下错误:
错误信息: 一个或多个错误发生。
内部异常: System.Net.Http.HttpRequestException: 发送请求时出错。---> System.Net.WebException: 基础连接被关闭: 发送时发生意外错误。---> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接在 System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) --- 内部异常堆栈跟踪的结尾 --- at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult) at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar) --- 内部异常堆栈跟踪的结尾 --- at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) --- 内部异常堆栈跟踪的结尾 ---这是我用来调用Web API的代码。通过浏览器调用Web API可以正常工作。
static void Main(string[] args)
{
string url = "https://app1/api/AddUrl?longUrl=http://google.com";
var result = GetTinyUrl(url).Result;
Console.WriteLine(result.ShortUrl);
}
protected static async Task<UrlResponse> GetUrl(string baseUrl)
{
HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
var client = new HttpClient(handler);
var response = client.GetAsync(baseUrl).Result;
if (response.IsSuccessStatusCode)
{
HttpResponseMessage response1 = response;
response.EnsureSuccessStatusCode();
var resp = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<UrlResponse>(resp);
return result;
}
return null;
}