Ich benutze HttpClient
, um eine GET
Anfrage an die API zu machen, die mir JSON-Daten zurückgeben soll, aber meine Anfrage bleibt bei GetStreamAsync
stecken. Ich habe es vorher debuggt, als es zu await that.GetStreamAsync(url);
kommt mein Debugger ist weg. Verschwinden. Ich versuche, es für einen Tag zu beheben, aber immer noch nicht arbeiten. Zuerst denke ich, dass es mein Proxy-Problem war, aber das ist es nicht. Dann versuche ich HttpRequest
es funktioniert gut zu verwenden.HttpClient.GetStreamAsync stecken
Hier ist meine Klasse.
public async Task<bool> RequestToApi(string response)
{
HttpClientHandler httpClientHandler = new HttpClientHandler();
if (_cdnResProxy.Value.Length > 0 && _cdnResPort.Value > 0)
{
httpClientHandler.Proxy = new WebProxy(string.Format("{0}:{1}",
_cdnResProxy.Value,
_cdnResPort.Value))
{ BypassProxyOnLocal = true };
}
//try to remove proxy here already but still not work
using (var hClient = new HttpClient(httpClientHandler))
{
hClient.DefaultRequestHeaders.ExpectContinue = false;
var result = await hClient.Get<ResponseObj>(
$"https://www.example.com/api/somepath?something={someValue}");
return result.success;
}
}
public static class HttpClientExtension
{
public static async Task<T> Get<T>(this HttpClient that, string url)
{
var stream = await that.GetStreamAsync(url); //stuck here
JsonSerializer serializer = new JsonSerializer();
T data;
using (StreamReader streamReader = new StreamReader(stream))
{
data = (T)serializer.Deserialize(streamReader, typeof(T));
}
return data;
}
}
Dies ist mein Controller.
[HttpPost]
[SwaggerVisible]
[SwaggerOperation("SignIn_VerifyCaptchaAction")]
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(bool))]
public bool RecaptchaSubmit(string response)
{
return _service.RecaptchaSubmit(response).Result;
}
Das ist meine Http
Paketversion:
<package id="System.Net.Http" version="4.3.2" targetFramework="net462" />
Hier ist die Methode, die ich schon versuchen.
Wenn 'Get()' nicht in einem UI-Thread aufgerufen wird, versuchen Sie Folgendes. Ändert das etwas? 'var stream = erwarte das.GetStreamAsync (url) .ConfigureAwait (false);' –
@QualityCatalyst Ich versuche das, bevor es nicht funktioniert. Ich probiere es nochmal, arbeite immer noch nicht. – Natsathorn
Gibt es einen besonderen Grund, warum Sie 'GetStringAsync' nicht verwenden? –