Я использую монитор трафика HTTP, используя Titanium.Web.Proxy. Похоже, он не передает информацию на сервер, работающий на том же ПК. Это REST-сервер, и я обращаюсь к почтальону с моего локального ПК. Когда прокси работает, я не получаю ответа. Прокси регистрирует трафик от Почтальона, но ничего не отвечает. Сервер REST также не регистрирует получение каких-либо команд. Это как если бы прокси не проходил через команды. Я не уверен, что происходит внутри сервера, но я, конечно, могу подсказать действительные пакеты. Кто-нибудь знает, какими должны быть мои следующие шаги?
Я запустил прокси локально, проблем с трафиком не видно, и он не мешает.
public void StartHTTPMonitor(string ipAddress)
{
proxyServer = new ProxyServer();
proxyServer.BeforeRequest += OnRequest;
proxyServer.BeforeResponse += OnResponse;
proxyServer.ServerCertificateValidationCallback += OnCertificateValidation;
proxyServer.ClientCertificateSelectionCallback += OnCertificateSelection;
explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Parse(ipAddress), 5050, true);
proxyServer.AddEndPoint(explicitEndPoint);
proxyServer.Start();
foreach (var endPoint in proxyServer.ProxyEndPoints)
WriteLog($"Listening on '{endPoint.GetType().Name}' endpoint at Ip {endPoint.IpAddress} and port: {endPoint.Port}");
//Only explicit proxies can be set as system proxy!
proxyServer.SetAsSystemHttpProxy(explicitEndPoint);
}
public async Task OnRequest(object sender, SessionEventArgs e)
{
WriteLog(e.HttpClient.Request.Url);
//var uri = e.HttpClient.Request.RequestUri.AbsoluteUri;
var method = e.HttpClient.Request.Method.ToUpper();
if (method == "POST")
{
//Get/Set request body as string
string bodyString = await e.GetRequestBodyAsString();
e.UserData = bodyString;
WriteLog(bodyString);
}
}
//Modify response
public async Task OnResponse(object sender, SessionEventArgs e)
{
//if (!e.ProxySession.Request.Host.Equals("medeczane.sgk.gov.tr")) return;
if (e.HttpClient.Request.Method == "GET" || e.HttpClient.Request.Method == "POST")
{
if (e.HttpClient.Response.StatusCode == 200)
{
string rspBody = await e.GetResponseBodyAsString();
WriteLog(rspBody);
string reqBody = (string) e.UserData;
if (e.HttpClient.Response.ContentType != null && e.HttpClient.Response.ContentType.Trim().ToLower().Contains("application/json"))
{
ReqRspQueue.Enqueue(new HTTPReqRsp(reqBody, rspBody));
}
}
}
}