Ich bin neu in der HttpClient-Klasse und ich habe Probleme mit der Überwachung von Anfragen mit Charles Proxy. Grundsätzlich muss ich die Anfragen überwachen, die entweder vom Simulator oder vom tatsächlichen iOS-Gerät stammen. Here können Sie ein großes Tutorial finden, wie Sie Charles für iOS-Entwicklung konfigurieren. Ich machte einfach Httpclient-Anfragen zum Beispiel nur eine einfache GenehmigungHTTP-Traffic-Überwachungsproblem bei der Verwendung von MonoTouch, HttpClient und Charles Proxy
async Task<string> authorizeUser()
{
HttpClient _client = new HttpClient();
_client.BaseAddress = new Uri("https://...../api/");
_client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue ("bearer", token);
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("username", "theUserName"),
new KeyValuePair<string, string>("password", "thePassword")
});
var result = await _client.PostAsync("auth", content);
string resultContent = result.Content.ReadAsStringAsync().Result;
return resultContent;
}
Der Code funktioniert, der Benutzer autorisiert wird, und der Träger Token zurückgegeben wird. Aber was war das Problem, dass meine Anfragen auf dem Simulator nicht in der Charles-HTTP-Verkehrsüberwachungsliste erschienen.
Ich dachte vielleicht, es ist, weil ich Simulator verwende, aber das war nicht der Fall. Ich versuchte, die Safari zu öffnen und blätterte auf einer Webseite. Der Verkehr erschien sofort. Also das Problem war nicht vom Simulator.
Ich habe auch versucht, auf dem Gerät installieren und wieder die gleiche Geschichte, wenn Httpclient mit der Verkehrsüberwachung Bildschirm bleibt stumm, aber sobald ich den Browser zu öffnen, beginnt der Verkehr Bildschirm wackeln und alle Anfragen usurpiert.
Ich dachte, möglicherweise ist es, weil ich HTTPS verwende, obwohl in jedem Fall mindestens die Anfrage Header erfasst werden sollte, obwohl der Körper codiert ist. Aber das war nicht der Fall, ich habe versucht, auf meiner Gerätesafari eine HTTPS-Seite zu öffnen und der Verkehr erschien wieder auf meinem Charles-Bildschirm.
Das nächste, was ich tat ich heruntergeladen monotouch HttpClient sample. Und die gute Nachricht ist, dass es mehrere Methoden zum Senden von Anfragen gibt, eigentlich vier davon - 1. http WebRequest, 2. https WebRequest, 3. http NSUrlConnection, 4. HttpClient.
Und ich habe sie alle ausprobiert, wie Sie vielleicht zuerst drei perfekt in Charles, aber der letzte HttpClient wieder weiß ich weiß nicht, warum nicht im Verkehrsprotokoll Bildschirm angezeigt.
So bin ich 100% sicher, dass das Problem die HttpClient-Klasse ist, die ich nicht weiß, warum trotz der Tatsache, dass es normal funktioniert, das Senden/Empfangen von Anforderungen ist, können die Anforderungen dieser Klasse nicht von Charles gefangen genommen werden.
Und um den letzten möglichen Grund für dieses Problem auszuschließen, das ist möglicherweise das Problem in Charles ist, habe ich auch versucht, Fiddler unter Windows, die als virtuelle Maschine auf meinem Mac ausgeführt wurde (here Sie finden, wie tun, dass), die gleiche Geschichte wurde wiederholt - alle Anfragen von HttpClient gemacht wurden nicht erfasst, der Rest (WebRequests, NSUrlConnection-s, Safari Webseitenöffnungen) funktionierte einwandfrei.
Bitte, kann mir jemand vorschlagen, ob es eine Art von Bug ist, möglicherweise gibt es eine Umgehungslösung oder eine andere Lösung für dieses Problem.
Dank allen für Ihre Antworten
Mit freundlichen Grüßen Gagik
Ich bin nicht sehr vertraut mit Charles Proxy, aber wenn Sie nicht funktionieren, können Sie versuchen, http://www.Runscope.com verwenden Es funktioniert als HTTP-Debugging-Vermittler und es gibt eine freier Plan. Disclaimer, ich arbeite als Entwickler für Runscope. –